我在托管对象模型中有一个实体(例如,员工),该实体与另外两个实体(例如部门和团队)相关。两种关系都是一对多的(即员工必须有一个部门和一个团队,团队和部门有很多员工)。这两者可能重叠,也可能不重叠(例如,一个团队可能由HR,Accounting& I.T.的员工组成,或者可能由一个部门的几名员工组成)。
Department <-->> Employee <<--> Team
我有两个NSArrayControllers为两个NSTableViews提供数据,一个Department表和一个Team表。员工可以在部门之间和团队之间移动而没有任何问题,但我不确定如何删除(解雇)员工。
如果我向其中一个阵列控制器发送一条删除消息,则该员工将被从团队中取出(例如)但留在部门中且对象图形处于不一致状态。即使我在两个控制器上调用了删除操作,对象也不会被删除 - 它是孤立的,只是陷入困境。
最初我有部门&amp;团队关系(Employee实体)设置为Nullify的删除规则,但即使将一个或两个更改为级联也无济于事。
我是否需要覆盖数组控制器上的remove:action以实际删除该员工,或者我是否遗漏了一些非常明显的内容?
答案 0 :(得分:9)
当您使用Core Data时,NSArrayController
有两种不同的行为。如果将其配置为直接从托管对象上下文中获取对象,则会在删除对象时删除它们。
如果您将contentSet
绑定到另一个控制器,就像听起来像是在这种情况下,默认行为是简单地从关系中删除对象。但是,如果要删除它,则会出现“删除删除对象”绑定选项,这将产生您想要的结果。