如何查看是否未设置核心数据实体的关系?

How can I see if a relationship of a core data entity has not been set?

那么,假设我有一个实体和一个关于该实体的关系,还有 AttributeOne 和 AttributeTwo。如何查看关系是否已设置?

对于下面的代码,我确保在获取实体的同时预取我的关系,这样我就知道我不只是因为关系出错。

但是不管Relationship有没有设置,if条件似乎都满足

if (Entity.Relationship != nil) {

    DLog(@"The relationship has been set");

}

当我运行一个po在控制台看到Relationship的内容时,我得到的是:

(lldb) po Entity.Relationship
Relationship 'Relationship' on managed object (0x7c647370) <Entity: 0x7c647370> (entity: Entity; id: 0x7c1c5cf0 <x-coredata:///Entity/tBBC33E0E-6A88-45D4-B4DD-F96794A33F282> ; data: {
    Relationship =     (
    );
    "AttributeOne" = 1;
    "AttributeTwo" = 2;
}) with objects {(
)}

这表明 Relationship 尚未设置,对我来说看起来是空的。但是上面的if条件仍然满足,我做错了什么?

看来你是一对多关系,用NSSet实例表示。它不是 nil,而是设置为空的 NSSet

如果你想知道Relationship中是否有任何对象,你可以通过检查关系的count来处理这两种情况:

if(Entity.Relationship.count > 0) {

}