1

从我一直在阅读的内容来看,对于像这样的关系department <->> employee,我无法设置一个简单的删除规则,如果一个部门中的最后一个员工被删除,就会导致部门被删除。相反,我必须编写这条规则。

我想我可能会使用键值观察,以及didChangeValueForKey:部门实体的方法。我想以 DRY 的方式将此删除操作集中到一个地方。

我不希望部门实体可以删除自己,如下所示:

- (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];
}

然后在我处理托管对象上下文之类的对象中进行删除。

我是否错过了一些可以让这更容易的东西?

4

2 回答 2

1

删除规则的好地方是-(void)prepareForDeletion. 您可以实现您需要的任何行为,从最简单到最复杂。

删除部门时,例如,您可以将该部门的所有员工移至上级部门(如果有)。删除员工时,可以检查上级部门是否还有员工,如果留空则删除。你的来电。

于 2012-06-27T18:43:30.573 回答
0

您的解决方案似乎很好,这里有一些其他可能的方法。 核心数据删除规则和多对多关系

于 2012-06-27T18:37:35.167 回答