iOS - CoreData - >删除不再有任何关系的对象

时间:2014-05-31 10:09:05

标签: ios core-data graph

我认为我的标题并没有正确解释情况,所以我要再解释一下。

我有一个主题,一对多。这些与会话有关。 会话与一对多的主题相关。 受试者与多对多的发言者有关。

所以这就是问题所在。如果我删除了一个扬声器,如果该扬声器所说的主体没有更多的扬声器,也应该将其删除。如果不再存在与之相关的主题,那么会话也应该被删除。它继续。

它有点复杂,需要太多行才能写入。有没有预先定义的选项呢?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这是一个解决方案:

您的层次结构如下:

主题 - >会话 - >主题 - >扬声器。

然后引用Apple文档:

  

级联:   删除关系目标处的对象。   例如,如果删除部门,则同时解雇该部门中的所有员工。

因此,您应为会话,主题和演讲者设置级联属性。

Cascade

希望这有帮助。

答案 1 :(得分:1)

您可以覆盖Core Data生成的方法以删除多对多关系。只要确保你调用这些方法。我建议在托管对象子类的类别中实现这些。

例如,在底层,对于Speakers,您只需使用Subject实体的remove方法:

-(void)removeSpeakersObject:(Speaker *)value {
   [super removeSpeakersObject:value];
   if (!self.speakers.count) {
        [self.session removeSubjectsObject:self];
   }
}

您在Session和Topic类中执行等效操作。