CoreData可选的多对多关系永远不会是零?

时间:2014-01-28 22:19:46

标签: core-data one-to-many relationship nsmanagedobject null

Quirk我刚刚发现,并想与这里的任何人确认这是否可以避免。基本上,如果我有一个非常简单的两个实体模型:

enter image description here

Entity1Entity2之间存在多对多关系。该关系是可选的,在双方都是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是否真的以合理直接的方式支持这一点?目前似乎没有,这意味着我将不得不寻找另一种(不太直接)的方式来代表我的模型。

谢谢,

Ĵ

1 个答案:

答案 0 :(得分:15)

简短的回答是否定的。你将永远得到一个空的回调。如果你需要知道一个对象结构是否完全实现(我猜你的目标是什么)那么你会想要在对象上设置一个属性来说明它是否完全实现。