Apple'ın documentation on -setPrimitiveValue:forKey:
, birçok ilişkiyi yönetmek için kullanması durumunda iki şekilde belirsizdir.setPrimitiveValue: forKey: ve çoktan çoğa ilişkileri
Önce devlet:
Yeni NSMutableSet nesnesine-çok ilişki kurmak için denerseniz, (sonunda) başarısız olur.
Sonunda ?! Bu ne anlama geliyor? -[NSManagedObjectContext save:]
sırasında başarısız olur mu? Yönetilen bir nesne bir hataya dönüştürüldüğünde ve sonra tekrar sayfalanmış mı? Ne zaman? İsteğe bağlı başarısızlığı sürekli olarak yeniden oluşturmak için bir test vakası yazabilir miyim?
İkincisi, örnek kodlar sağlayarak doğru bu durumun ele alınması, yazdıkları:
ilk ne yapmalıyım
(nil
dönmez yöntemini sağlamak) primitiveValueForKey:
kullanarak mevcut set almak yönteminin ne zaman geri döndüğü? assert()
ve hemen başarısız çünkü bu, tüm nesne grafiğinin bozuk olduğu ve kaydetmenin veri kaybına neden olacağı anlamına geliyor? NSAssert()
, arayan kişiye bir uyarı olarak, ancak (hiçbir şey yapmadan sessizce) tuşuna basar mı?
Şu anda sadece doğrudan atama ediyorum benim şöyle bu durumda NS[Mutable]Set
, istenen:
- (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"];
}
}
yanlış mı?