【问题标题】:Disappearing NSManagedObjects消失的 NSManagedObject
【发布时间】:2011-05-10 22:50:14
【问题描述】:

我正在开发基于文档的应用程序。

打开保存的文件时,我将 NSManagedObjectContext 加载到视图控制器。该视图控制器需要观察某种类型的所有对象的“深度”属性的变化。当视图控制器获取上下文时,它会获取所有这些对象,将自己添加为每个值的观察者,并将它们保存在一个数组中以进行跟踪。

每当 Core Data 发送 ContextDidChange 通知时,我都会在观察它们后将创建的对象添加到该数组中。对于已删除的对象,我将视图控制器作为观察者移除,并将它们从该数组中移除。

在我关闭文档并重新打开它之前,这非常有效。发生这种情况时,所有对象都将添加到此数组中。观察效果很好。然而,第二个第一个“NSManagedObjectContextObjectsDidChangeNotification”进来,我所有的 NSManagedObjects 不知何故不再在我设置的数组中。删除时,我得到一个崩溃,告诉我无法删除不是观察者的观察者。

这很奇怪。

为什么那些 NSManagedObjets 突然消失了?我根本不发布数组或做任何有趣的事情。

【问题讨论】:

    标签: cocoa macos core-data nsmanagedobject


    【解决方案1】:

    当您关闭文档并重新打开它时,您将获得一个新的视图控制器对象。
    但是,听起来原来的视图控制器仍然存在并且仍在观察:

    NSManagedObjectContextObjectsDidChangeNotification.
    

    检查以确保当您关闭文档时,视图控制器正在将自己作为通知观察者移除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-28
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多