NSManagedObject和isDeleted

Bri*_*ing 4 core-data objective-c

我有一个多上下文核心数据应用程序,它大量使用观察者来保持UI状态.由于删除了观察对象,我遇到了一系列删除问题.我很想用'if([mo isDeleted])返回来保护我的观察者;':

来自NSManagedObject文档

如果Core Data要求持久存储在下一个保存操作期间删除该对象,则该方法返回YES.它可能在其他时间返回NO,特别是在删除对象之后.它将停止返回YES的即时性取决于对象在被删除过程中的位置.

好吧,我书中的设计选择很糟糕,但我很好奇人们如何解决这个问题.显然我需要在删除之前清除观察到的属性.我认为只有"干净"的方法是观察NSManagedObjectContextWillChange事件,看看我是否存储了任何已删除的对象.看起来像一个干净的工作,但也许我错过了一些东西.

Dan*_*son 14

另一个可能适用于您的设计的替代方案:如果已删除并且已保存上下文,-[NSManagedObject managedObjectContext]则将返回nil.您可以在收到NSManagedObjectContextDidSave通知后进行检查.

  • 谢谢! - (BOOL)isReallyDeleted {return [self isDeleted] || [self managedObjectContext] == nil; } (5认同)