首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSMutableArray知识获取/知识获取问题

NSMutableArray知识获取/知识获取问题
EN

Stack Overflow用户
提问于 2011-02-12 16:57:19
回答 1查看 1.1K关注 0票数 0

这是"Cocoa Programming For Mac Os X This (HD)“一书中的一个示例,第7章”键值编码。键-值观察“

代码如下:

Person.h:

代码语言:javascript
运行
复制
 #import <Foundation/Foundation.h>


 @interface Person : NSObject {
    NSString *personName;
    float expectedRaise;
 }
 @property (readwrite, copy) NSString *personName;
 @property (readwrite) float expectedRaise;

 @end

Person.mm:

代码语言:javascript
运行
复制
#import "Person.h"
@implementation Person

@synthesize expectedRaise;
@synthesize personName;

- (id)init
{
    [super init];
    expectedRaise = 0.05;
    personName = @"New Person";
    return self;
}

- (void)dealloc
{
    [personName release];
    [super dealloc];
}

@end

MyDocument.h:

代码语言:javascript
运行
复制
#import <Cocoa/Cocoa.h>

@interface MyDocument : NSDocument
{
    NSMutableArray *employees;
}

@property (retain) NSMutableArray *employees;

@end

MyDocument.mm:

代码语言:javascript
运行
复制
#import "MyDocument.h"
#import "Person.h"

@implementation MyDocument

@synthesize employees;

- (id)init
{
    if (![super init])
        return nil;

    employees = [[NSMutableArray alloc] init];

    return self;
}
- (void)dealloc
{
    [employees release];
    [super dealloc];
}

- (void)windowControllerDidLoadNib:(NSWindowController *) aController


@end

示例运行良好。(首先是一个空白表,您可以添加或删除记录)。

现在,我尝试向数组中添加一些记录,以便空表一开始会有一些内容。

下面是我尝试过的(在init方法中):

代码语言:javascript
运行
复制
[self willChangeValueForKey:@"employees"];
Person *p1 = [[Person alloc] init];
[employees addObject: [NSData dataWithBytes: &p1 length: sizeof(p1)]];
[self didChangeValueForKey:@"employees"];

但是当我构建并出错时,我得到了错误消息:

代码语言:javascript
运行
复制
[<NSConcreteData 0x422bf0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key personName.
......

有人能帮我离开这里吗?预先感谢^_^

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-12 22:56:24

这似乎是一个非常合理的回应。您将NSData添加到名为employees的数组中;从名称和KVC猜测,您可能打算将p1添加到您的数组中。所以,试一试:

代码语言:javascript
运行
复制
[employees addObject:p1];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4977225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档