根据我一直在阅读的内容,对于像department <->> employee
这样的关系,我无法设置一个简单的删除规则,如果部门中的最后一个员工被删除,将导致部门被删除。相反,我必须编写这个规则。
我以为我可以使用部门实体的didChangeValueForKey:
方法进行键值观察。我想以干燥的方式将这个删除操作集中到一个地方。
我不希望部门实体可以自行删除,如下所示:
- (void) didChangeValueForKey:key {
if (![key isEqualToString @"employee") return;
if (self.employee == NULL)
[self deleteAndSave]; // a category method
}
所以我可能会发布通知,而不是
- (void) didChangeValueForKey:key {
if (![key isEqualToString @"employee") return;
if (self.employee == NULL)
[[NSNotificationCenter defaultCenter] postNotificationName:@"empDelete" object:self];
}
然后将删除发生在我处理托管对象上下文之类的对象中。
我错过了一些可以让这更容易的事情吗?
答案 0 :(得分:1)
删除规则的好地方是-(void)prepareForDeletion
。您可以实现所需的任何行为,从最简单到最复杂。
删除部门时,您可以按示例将所有部门的员工移至主管部门(如果有)。当您删除员工时,您可以检查父部门是否仍有员工,如果留空则将其删除。你的电话。
答案 1 :(得分:0)
您的解决方案似乎很好,这里有一些其他可能的方法。 Core Data Deletion rules and many-to-many relationships