我正在开发基于文档的应用程序。
打开保存的文件时,我将NSManagedObjectContext加载到视图控制器。此视图控制器需要在特定类型的所有对象上观察属性“深度”的更改。当视图控制器获取上下文时,它获取所有这些对象,将其自身添加为每个对象的观察者,并将它们保存在数组中以跟踪。
每当Core Data发送ContextDidChange通知时,我会在观察它们之后将创建的对象添加到此数组中。对于已删除的对象,我将视图控制器作为观察者删除,并从该数组中删除它们。
这很有效,直到我关闭文档并重新打开它。发生这种情况时,所有对象都将添加到此数组中。观察工作正常。但是,第二个第一个“NSManagedObjectContextObjectsDidChangeNotification”进来,我的所有NSManagedObjects都不再在我设置的数组中。在删除时,我得到一个崩溃告诉我,我无法移除一个不是观察者的观察者。
这很奇怪。
为什么那些NSManagedObjets突然消失了?我根本不会发布阵列或做任何有趣的事情。
答案 0 :(得分:0)
当您关闭文档并重新打开它时,您将获得一个新的视图控制器对象 然而,听起来原始视图控制器仍然存在并仍在观察:
NSManagedObjectContextObjectsDidChangeNotification.
检查以确保在关闭文档时视图控制器将自己作为通知观察者移除。