如何在删除时手动管理核心数据关系

时间:2009-08-13 08:54:29

标签: cocoa core-data

我有一个核心数据实体,它包含与另一个实体的关系。在某些情况下,我需要删除关系中的托管对象,有时则不需要采取任何操作。

由于此手动管理,我对该实体的删除规则为无操作。

我遇到的问题是,执行这些规则的最佳位置在哪里?我无法在NSManagedObject上看到任何合适的消息覆盖(可能会通知对象已被删除并且应该清除其关系)。

我宁愿不在应用程序逻辑中做得更高,因为实体对象可以从数组控制器和应用程序的不同点删除,因此必须在所有这些级别填充关系更新代码。

1 个答案:

答案 0 :(得分:1)

NSManagedObject子类中,覆盖-prepareForDeletion方法并处理那里的逻辑。

更新

您没有指定需要退役版本的解决方案。在这种情况下,您可以在-save:调用中处理它。在保存之前,抓取要删除的对象数组,迭代它们然后调用-prepareForDeletion on each object if it responds to it (using - respondsToSelector:`),这为您提供了一种处理删除的未来证明方法。当然,在运行此代码之前,您需要检查是否运行10.6或更早的操作系统,但写起来相当简单。