我认为我的标题并没有正确解释情况,所以我要再解释一下。
我有一个主题,一对多。这些与会话有关。 会话与一对多的主题相关。 受试者与多对多的发言者有关。
所以这就是问题所在。如果我删除了一个扬声器,如果该扬声器所说的主体没有更多的扬声器,也应该将其删除。如果不再存在与之相关的主题,那么会话也应该被删除。它继续。
它有点复杂,需要太多行才能写入。有没有预先定义的选项呢?
感谢您的帮助。
答案 0 :(得分:1)
这是一个解决方案:
您的层次结构如下:
主题 - >会话 - >主题 - >扬声器。强>
然后引用Apple文档:
级联: 删除关系目标处的对象。 例如,如果删除部门,则同时解雇该部门中的所有员工。
因此,您应为会话,主题和演讲者设置级联属性。
希望这有帮助。
答案 1 :(得分:1)
您可以覆盖Core Data生成的方法以删除多对多关系。只要确保你调用这些方法。我建议在托管对象子类的类别中实现这些。
例如,在底层,对于Speakers,您只需使用Subject实体的remove方法:
-(void)removeSpeakersObject:(Speaker *)value {
[super removeSpeakersObject:value];
if (!self.speakers.count) {
[self.session removeSubjectsObject:self];
}
}
您在Session和Topic类中执行等效操作。