Apple documentation on -setPrimitiveValue:forKey:
нечетко признается в двух отношениях, когда используется для управления многими отношениями.setPrimitiveValue: forKey: and to many many
Во-первых, они заявляют:
Если вы пытаетесь установить отношения ко многим новому объекту NSMutableSet, он будет (в конечном счете) терпят неудачу.
В конце концов ?! Что это значит? Неудачно ли это произойдет в течение -[NSManagedObjectContext save:]
? Когда управляемый объект превращается в неисправность, а затем возвращается обратно? Когда? Могу ли я написать тестовый пример для последовательного воссоздания отказа по требованию?
Во-вторых, предоставляя образец кода, чтобы правильно обрабатывать этот случай, они пишут:
первым получить существующий набор, используя
primitiveValueForKey:
(обеспечить метод не возвращаетnil
)
Что я должен делать если/когда метод делает return 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"];
}
}
является то, что не так?