Apple's documentation on -setPrimitiveValue:forKey:
jest niejasny na dwa sposoby, gdy używa go do zarządzania relacjami wiele-wiele.setPrimitiveValue: forKey: and to-many relationships
pierwsze stwierdzają:
Jeśli spróbujesz ustawić relację do wielu do nowego obiektu NSMutableSet, to będzie (w końcu) nie powiedzie się.
W końcu ?! Co to ma znaczyć? Czy później zawiedzie podczas -[NSManagedObjectContext save:]
? Kiedy obiekt zarządzany jest przekształcany w błąd, a następnie ponownie wywoływany? Gdy? Czy mogę napisać przypadek testowy, aby konsekwentnie odtwarzać awarię na żądanie?
drugie, zapewnienie przykładowy kod, aby prawidłowo obsługiwać tę sprawę, piszą:
najpierw uzyskać istniejącego zestawu używając
primitiveValueForKey:
(zapewnienia metody nie zwracanil
)
co mam zrobić jeśli/kiedy metoda zwraca zero? assert()
i to natychmiast, ponieważ oznacza to, że cały wykres obiektów jest uszkodzony, a zapisanie spowoduje utratę danych? NSAssert()
na to jako ostrzeżenie dla dzwoniącego, ale naciśnij (cicho nic nie robiąc)?
Teraz jestem po prostu bezpośrednio przypisywania mój pożądany NS[Mutable]Set
w tym przypadku, tak jak poniżej:
- (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"];
}
}
Czy to źle?