Core data 我是否需要从我创建的每个NSManagedObjectContext中观察NSManagedObjectContextDidSaveNotification?
当我们第一次向应用程序添加核心数据时,我们遵循的教程在我们的应用程序委托中创建了一个Core data 我是否需要从我创建的每个NSManagedObjectContext中观察NSManagedObjectContextDidSaveNotification?,core-data,nsmanagedobjectcontext,Core Data,Nsmanagedobjectcontext,当我们第一次向应用程序添加核心数据时,我们遵循的教程在我们的应用程序委托中创建了一个NSManagedObjectContext。它建议,如果我们在其他线程上使用核心数据,我们应该在保存线程上下文时添加一个观察者来更新主上下文,如下所示: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mergeChanges:)
NSManagedObjectContext
。它建议,如果我们在其他线程上使用核心数据,我们应该在保存线程上下文时添加一个观察者来更新主上下文,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:self.managedObjectContext];
这在ApplicationIDFinishLoadingWithOptions:
中发生一次。但是,NSManagedObjectContext的文档说明:
一些系统框架在内部使用核心数据。如果注册以从所有上下文接收这些通知(通过将nil作为对象参数传递给addObserver…方法),则可能会收到难以处理的意外通知
这向我建议对象参数应该是正在保存的上下文(在我的例子中是背景上下文),而不是主上下文。是这样吗?我是否需要从我创建的每个NSManagedObjectContext中观察NSManagedObjectContextDidSaveNotification?Simon
-addObserver:selector:name:object:
方法中的对象是通知的源。在您的情况下,它应该是后台NSManagedObjectContext
你应该观察你创造的每一个环境吗?就像所有事情一样,这要视情况而定。例如,有时您希望使用上下文作为草稿行,并且永远不会保存其中的任何内容。为什么要费心去观察呢?通常,您希望观察任何改变持久存储的上下文
安德鲁西蒙
-addObserver:selector:name:object:
方法中的对象是通知的源。在您的情况下,它应该是后台NSManagedObjectContext
你应该观察你创造的每一个环境吗?就像所有事情一样,这要视情况而定。例如,有时您希望使用上下文作为草稿行,并且永远不会保存其中的任何内容。为什么要费心去观察呢?通常,您希望观察任何改变持久存储的上下文
安德鲁