2011-01-20 39 views
2

我有一个多上下文的核心数据应用程序,使用观察员大量使UI保持在状态。我遇到了由于观察对象被删除而发生的删除问题。我很想去保护我的观察家“如果([MO请将isDeleted])回报;”:NSManagedObject和isDeleted

From NSManagedObject documentation

该方法返回YES,如果核心数据 将要求持久性存储 中删除对象下次保存 操作。它可能在其他 时间返回NO,特别是在对象 已被删除后。与 即时性,它将停止返回YES 取决于对象在 过程中被删除。

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

回答

12

另一种替代方案可能会或可能不适用于您的设计:-[NSManagedObject managedObjectContext]将返回nil,如果它已被删除且上下文已保存。您可以在NSManagedObjectContextDidSave通知后检查此项。

+5

谢谢! - (BOOL)isReallyDeleted { \t return [self isDeleted] || [self managedObjectContext] == nil; } – 2011-01-20 15:31:21