CoreData:检查Null

And*_*son 0 iphone cocoa cocoa-touch core-data objective-c

我有一个CoreData实体(waypoint)与另一个实体(轨道)的外键.设置外键或未设置外键时,此if语句正常工作:

if ([wp track]) {
  thirdLabel.text = [NSString stringWithFormat:@"Part of Track: %@", [[wp track] title]];
}   
Run Code Online (Sandbox Code Playgroud)

但是,如果已删除航点被键入的轨道,则[wp track]仍会计算为true,并且在设置标签文本时程序崩溃.

那么,我如何在CoreData中正确检查这个"已被删除"的空值?

bob*_*vil 6

听起来你有一个单向关系的问题.你所描述的问题进行了更详细给出这里下的"单向关系"

基本上,你的航路点无法知道轨道是从它下面删除的.建议的解决方案是将关系建模为双向关系,这样可以使Core Data保持模型的一致性.

在您的具体示例中,如果您的"track"对象与"waypoint"之间存在反向关系,那么当您删除"track"对象时,Core Data将知道更新航点以消除任何悬空关系.有关这方面的更多信息也可以在上面的链接中看到.