3

キー値コーディングを使用すると、実行時に NSManagedObject に未定義の属性を設定でき、例外はスローされないという印象を受けましたが、データ モデルにないモデルにアタッチされたオブジェクトを保持する方法になるでしょう。

たとえば、「バー」属性を持たない Foo オブジェクトがあります。実行時に、次のように設定できると思いました。

Foo *foo = [NSEntityDescription insertNewObjectForEntityForName:@"Foo" inManagedObjectContext:ManagedObjectContext];
[foo setValue:@"foobar" forUndefinedKey:@"bar"];

その後、ManagedObjectContext が後でクエリを実行するまでこの値を保持することを期待しますが、Managed Object Context を保存してもバーの値は保存されません。

このコードを実行すると、有名なエラーがポップアップし続けます。

the entity Foo is not key value coding-compliant for the key "bar"

..だから私の質問は: 私は何を得ていないか、間違っているのですか?

4

2 に答える 2

1

この質問、NSManagedObject サブクラスと setValuesForKeysWithDictionary:が関連している可能性があります。

概念的には、ランダムな値とキーを安全に割り当てることはできないと思います。これを行うと、オブジェクト グラフが混乱する可能性があります。

于 2010-01-29T23:56:04.823 に答える
1

データモデルでは、属性を「一時」として設定できます

これにより、その属性を設定できますが、ストアには保存されませんが、クエリと元に戻すことができます。

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

于 2010-01-30T01:00:08.320 に答える