CoreData 中的可选 to-many 关系永远不能为 nil 吗?

19

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

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中是否有合理直接的方式来支持这一点?目前似乎并没有,这意味着我将不得不找到另一种(不太直接)的方法来表示我的模型。

谢谢,

J


请注意,我已经使用-primitiveValueForKey:进行了验证;结果是相同的。 - Jonathan Crooke
1个回答

18

简短回答是不行。您将始终获得一个空集合。如果您需要知道对象结构是否完全实现(我猜测您的目标是什么),那么您将希望在对象上设置属性来表示它是否完全实现。


谢谢您的回复。是的,看来我必须找到另一种表示方式,而不是依赖于 nil - Jonathan Crooke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接