Quirk我刚刚发现,并想与这里的任何人确认这是否可以避免。基本上,如果我有一个非常简单的两个实体模型:
Entity1
和Entity2
之间存在多对多关系。该关系是可选的,在双方都是nullify作为删除规则。但是,如果我插入新的Entity1
,则children
关系的值将为空集,而不是nil
:
NSManagedObject *object = [NSEntityDescription
insertNewObjectForEntityForName:@"Entity1"
inManagedObjectContext:[self managedObjectContext]];
assert([object valueForKey:@"children"] != nil);
此外,我无法明确将关系设置为nil
:
[object setValue:nil forKey:@"children"];
assert([object valueForKey:@"children"] != nil);
我已经在一个新的,最小的项目中验证了这一点,这似乎是一个真正的实现细节。问题是,我希望能够区分nil
值(表示当前未知)和空集(真正的零到关系)。 CoreData是否真的以合理直接的方式支持这一点?目前似乎没有,这意味着我将不得不寻找另一种(不太直接)的方式来代表我的模型。
谢谢,
Ĵ
答案 0 :(得分:15)
简短的回答是否定的。你将永远得到一个空的回调。如果你需要知道一个对象结构是否完全实现(我猜你的目标是什么)那么你会想要在对象上设置一个属性来说明它是否完全实现。