消失的 NSManagedObject

Posted

技术标签:

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

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

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

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

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

这很奇怪。

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

【问题讨论】:

【参考方案1】:

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

NSManagedObjectContextObjectsDidChangeNotification.

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

【讨论】:

以上是关于消失的 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的数据库消失然后出现,现在又消失了?

c#中点关闭窗口时怎么使窗口渐渐消失?

win10 wifi功能消失消失不见的解决办法

如何确保菜单关闭时立即消失,而不是部分消失?

精灵在触摸后消失而不是在拖动后消失

选择单元格时,图像视图消失但 UILabel 消失