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

use*_*965 2 objective-c key-value-coding nsobject kvc

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

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

我的代码:

ContactObject.h:

@interface ContactObject : NSObject
     + (ContactObject *)testAdding;
@end
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我想我错过了一些非常愚蠢的东西:)

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

问候,马提亚

Jac*_*ack 5

实际上符合KVC标准:

如何使属性KVC兼容取决于该属性是属性,一对一关系还是多对多关系.对于属性和一对一关系,类必须按给定的优先顺序实现以下至少一项(键指的是属性键):

  1. 该类具有名称的声明属性key.
  2. 它实现名为key的访问器方法,如果属性是可变的,则setKey:.(如果属性是Boolean属性,则getter访问器方法具有该表单isKey.)
  3. 它声明了一个key或多个表单的实例变量_key.

我没有看到这三个实现中的任何一个.您需要至少具有通过KVC设置的属性,默认的NSObject实现能够通过设置属性,setValue:forKey:但您必须声明它们.