4

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

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

我有两个 NSArrayControllers 为两个 NSTableViews、一个 Department 表和一个 Team 表提供数据。员工可以在部门之间和团队之间毫无问题地移动,但我不知道如何删除(解雇)员工。

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

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

我是否需要覆盖数组控制器上的 remove: 操作以实际删除员工,或者我是否遗漏了一些非常明显的东西?

4

1 回答 1

9

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

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

于 2009-10-21T14:27:31.997 回答