【问题标题】:NSManagedObject and isDeletedNSManagedObject 和 isDeleted
【发布时间】:2011-06-12 12:27:56
【问题描述】:

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

From NSManagedObject documentation

如果 Core Data 方法返回 YES 将要求持久存储 在下次保存期间删除对象 手术。它可能会在其他地方返回 NO 次,特别是在对象之后 已被删除。即时性 它将停止返回 YES 取决于对象在 被删除的过程。

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

【问题讨论】:

    标签: objective-c core-data


    【解决方案1】:

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

    【讨论】:

    • 谢谢! - (BOOL) isReallyDeleted { return [self isDeleted] || [self managedObjectContext] == nil; }
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多