我的印象是,通过键值编码,我可以在运行时在 NSManagedObject 上设置任何未定义的属性,并且不会引发异常,但这将是一种方法来保存附加到模型中的不在数据模型中的对象。
例如,我有一个没有“bar”属性的 Foo 对象。我虽然在运行时,我可以这样设置:
Foo *foo = [NSEntityDescription insertNewObjectForEntityForName:@"Foo" inManagedObjectContext:ManagedObjectContext];
[foo setValue:@"foobar" forUndefinedKey:@"bar"];
然后,我希望 ManagedObjectContext 保持这个值,直到我稍后查询它,但是保存在 Managed Object Context 上不会存储 bar 值。
当我运行此代码时,著名的错误不断弹出:
the entity Foo is not key value coding-compliant for the key "bar"
..所以我的问题是:我没有得到什么或做错了什么?