2009-10-21 91 views
4

我有一个与另外两个实体(例如Department和Team)相关的管理对象模型中的实体(例如Employee)。这两种关系都是一对多关系(即员工必须有一个部门和一个团队,团队和部门有很多员工)。这两者可能重叠也可能不重叠(例如,一个团队可能由HR的员工组成,会计& I.T.或者可能由一个部门的若干员工组成)。从阵列控制器中删除实体时如何删除实体?

Department <-->> Employee <<--> Team  

我有两个NSArrayControllers两个NSTableViews,一个部门表和一个团队表提供数据。员工可以在部门之间和团队之间进行移动,但我不知道如何删除(激发)员工。

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

本来我有部门&(员工实体的)团队关系设置为删除规则为Nullify,但即使将其中一个或两个都改为级联也无济于事。

我是否需要重写数组控制器上的remove:操作以实际删除员工,还是缺少真正明显的东西?

回答

9

当您使用核心数据时,NSArrayController有两种不同的行为。如果它被配置为直接从托管对象上下文获取对象,它将在删除对象时删除它们。

如果您将contentSet绑定到另一个控制器,就像您在这种情况下听起来一样,默认行为是将该对象从关系中删除。但是,如果要删除它,则会出现“删除删除对象”绑定选项,这会生成您想要的结果。

+0

这么简单的事!我真的应该看看绑定选项!当然,我也必须将删除规则从级联更改为无效! 谢谢亚历克斯!我会投你的答案,但我还没有足够的声望点! :) – Matthew 2009-10-21 21:54:26