自定义类NSObject不符合键值编码

可能重复:
为什么我的对象不符合关键值编码标准?

我有一本词典,我想将键/值添加到自定义类中,但是我总是得到错误,该类不符合KVC,但Apple文档声明它应该是。

我的代码:

ContactObject.h:

@interface ContactObject : NSObject
     + (ContactObject *)testAdding;
@end

ContactObject.m:

@implementation ContactObject

- (id)init {
    self = [super init];
    if (self) {
        // customize

    }

    return self;

}

+ (ContactObject *)testAdding
{
    // create object
    ContactObject *theReturnObject = [[ContactObject alloc] init];

    [theReturnObject setValue:@"Berlin" forKey:@"city"];
    [theReturnObject setValue:@"Germany" forKey:@"state"];

    return theReturnObject;

}

@end

我想我错过了很愚蠢的东西:)

请任何帮助表示赞赏...

问候,matthias


实际上要符合KVC:

如何制作符合KVC标准的属性取决于该属性是属性,一对一关系还是多对多关系。 对于属性和一对一关系,类必须按照给定的优先顺序(key指属性键)至少实现以下一项:

  • 该类具有带名称key的声明属性。
  • 它实现了名为key的访问器方法,如果属性是可变的, setKey: (如果该属性是Boolean属性,则getter访问器方法的格式为isKey 。)
  • 它声明了表单key_key的实例变量。
  • 我没有看到这三个实施。 您至少需要通过KVC设置的属性,默认的NSObject实现能够通过setValue:forKey:设置属性setValue:forKey:但是您必须声明它们。


    您需要声明将使用的每个属性:

    @interface ContactObject : NSObject
    
    @property (nonatomic,copy, readwrite) NSString* city;
    @property (nonatomic, copy, readwrite) NSString* state;
    
    + (ContactObject *)testAdding;
    
    @end
    

    或者使用一个NSMutableDictionary对象。

    例如:

    NSMutableDictionary* dict= [NSMutableDictionary new];
    [dict setObject: @"Berlin" forKey: @"city"];
    [dict setObject: @"Germany" forKey: @"state"];
    

    你需要实际声明/实现属性。 键值编码并不意味着每个NSObject都自动成为键/值字典。

    在这种情况下,您需要声明:

    @property (nonatomic, readwrite, copy) NSString* city;
    @property (nonatomic, readwrite, copy) NSString* state;
    

    在你的@interface声明中。

    链接地址: http://www.djcxy.com/p/64999.html

    上一篇: Custom class NSObject not key value coding compliant

    下一篇: Keypath for first element in embedded NSArray