删除时如何手动管理Core Data关系
Posted
技术标签:
【中文标题】删除时如何手动管理Core Data关系【英文标题】:How to manually manage Core Data relationships when deleting 【发布时间】:2009-08-13 08:54:29 【问题描述】:我有一个核心数据实体,其中包含与另一个实体的关系。在某些情况下,我需要删除关系中的托管对象,而其他时候不需要采取任何措施。
由于这种手动管理,我对实体的删除规则是无操作。
我的问题是,执行这些规则的最佳地点在哪里?我看不到任何合适的消息可以覆盖 NSManagedObject(可能会通知对象它已被删除并应该清除其关系的东西)。
我宁愿不在应用程序逻辑的更高层执行它,因为实体对象可以从数组控制器和应用程序的不同点删除,因此有必要在所有这些级别填充关系更新代码。
【问题讨论】:
【参考方案1】:在您的 NSManagedObject
子类中,重写 -prepareForDeletion
方法并处理那里的逻辑。
更新
您没有指定需要针对已停用版本的解决方案。在这种情况下,您可以在 -save:
调用中处理它。就在保存之前,获取要删除的对象数组,遍历它们,然后调用 -prepareForDeletionon each object if it responds to it (using
-respondsToSelector:`),这为您提供了一种处理删除的未来证明方法。在运行此代码之前,您当然需要检查您是否运行的是 10.6 或更早的操作系统,但编写起来相当简单。
【讨论】:
-prepareForDeletion 仅 10.6以上是关于删除时如何手动管理Core Data关系的主要内容,如果未能解决你的问题,请参考以下文章