在使用它来管理多对多关系时,Apple 的文档在两个方面是模糊的。-setPrimitiveValue:forKey:
他们首先声明:
如果您尝试为新的 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"];
}
}
那是错的吗?