【问题标题】:Core Data and Runtime Key Value Coding核心数据和运行时键值编码
【发布时间】:2010-01-29 23:22:04
【问题描述】:

我的印象是,通过键值编码,我可以在运行时在 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"

..所以我的问题是:我没有得到什么或做错了什么?

【问题讨论】:

    标签: iphone objective-c core-data key-value-coding


    【解决方案1】:

    NSManagedObject subclasses and setValuesForKeysWithDictionary: 这个问题可能是相关的。

    从概念上讲,我认为您不能安全地分配随机值和键。这样做似乎可能会破坏对象图。

    【讨论】:

      【解决方案2】:

      在您的数据模型中,您可以将属性设置为“瞬态”

      这允许您设置该属性,但它不会保存在存储中,但仍可用于查询和撤消。

      http://2pi.dk/tech/cocoa/transient_properties.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-28
        • 2013-09-12
        • 2010-11-12
        相关资源
        最近更新 更多