我有一个多上下文核心数据应用程序,它大量使用观察者来保持UI状态。由于删除了观察对象,我遇到了一系列删除问题。我很想用'if([mo isDeleted])返回来保护我的观察者;':
From NSManagedObject documentation
如果核心数据,该方法返回YES 会问持久性商店 在下次保存期间删除对象 操作。它可以在其他地方返回NO 次,特别是在物体之后 已被删除。与时俱进 哪个会停止返回YES 取决于对象在哪里 被删除的过程。
我的书中的设计选择太糟糕了,但我很好奇人们如何解决这个问题。显然我需要在删除之前清除观察到的属性。我认为只有“干净”的方法是观察NSManagedObjectContextWillChange事件,看看我是否存储了任何已删除的对象。看起来像一个干净的工作,但也许我错过了一些东西。
答案 0 :(得分:12)
另一种可能适用于您的设计的替代方案:-[NSManagedObject managedObjectContext]
如果已删除并且保存了上下文,则会返回nil
。您可以在NSManagedObjectContextDidSave
通知后检查此内容。