从阵列控制器中删除实体时如何删除实体?

Mat*_*hew 4 cocoa core-data nsarraycontroller cocoa-bindings

我在托管对象模型中有一个实体(例如Employee),它与另外两个实体(例如Department和Team)相关.这两种关系都是一对多的(即员工必须有一个部门和一个团队,团队和部门有很多员工).这两者可能重叠也可能不重叠(例如,团队可能由来自人力资源,会计和IT的员工组成,或者可能由一个部门的几名员工组成).

Department <-->> Employee <<--> Team    
Run Code Online (Sandbox Code Playgroud)

我有两个NSArrayControllers为两个NSTableViews提供数据,一个Department表和一个Team表.员工可以在部门之间和团队之间移动而没有任何问题,但我不确定如何删除(解雇)员工.

如果我向其中一个阵列控制器发送一条删除消息,则该员工将被从团队中取出(例如),但留在部门中且对象图形处于不一致状态.即使我在两个控制器上调用remove动作,对象也不会被删除 - 它是孤立的,只是挂在空中.

最初我将部门和团队关系(Employee实体)设置为Nullify的删除规则,但即使将一个或两个更改为级联也无济于事.

我是否需要覆盖阵列控制器上的remove:action以实际删除员工,或者我是否遗漏了一些非常明显的内容?

Ale*_*lex 9

NSArrayController当您使用Core Data时,有两种不同的行为.如果将其配置为直接从托管对象上下文中获取对象,则会在删除对象时删除它们.

如果你绑定contentSet到另一个控制器,就像你在这种情况下听起来一样,默认行为是简单地从关系中删除对象.但是,如果要删除它,则会出现"删除删除对象"绑定选项,这将生成所需的结果.