Apple のドキュメント-setPrimitiveValue:forKey:
は、対多関係を管理するために使用する場合、2 つの点であいまいです。
最初に彼らは次のように述べています:
対多関係を新しい NSMutableSet オブジェクトに設定しようとすると、(最終的には) 失敗します。
最終的?!それは一体何の意味ですか?後で失敗し-[NSManagedObjectContext save:]
ますか? 管理対象オブジェクトがフォルトになり、ページインされたときは? いつ?オンデマンドで一貫して障害を再現するテスト ケースを作成できますか?
次に、このケースを正しく処理するためのサンプル コードを提供すると、次のように書かれています。
最初に既存のセットを取得します
primitiveValueForKey:
(メソッドが返されないことを確認してくださいnil
)
メソッドがnil を返す場合はどうすればよいですか? assert()
オブジェクトグラフ全体が破損し、保存するとデータが失われるため、すぐに失敗しますか? NSAssert()
発信者への警告としてそれをオンにしますが、押し続けます(黙って何もしません)?
今のところNS[Mutable]Set
、その場合は次のように直接直接割り当てています。
- (void)setChildren:(NSSet*)value_ {
NSMutableSet *mutableRelationshipSet = [[[self primitiveValueForKey:@"children"] mutableCopy] autorelease];
if (mutableRelationshipSet) {
[mutableRelationshipSet setSet:value_];
[self setPrimitiveValue:mutableRelationshipSet forKey:@"children"];
} else {
[self setPrimitiveValue:value_ forKey:@"children"];
}
}
それは間違っていますか?