2012-02-16 63 views
0

当我们第一次将核心数据添加到我们的应用程序时,我们遵循的教程在我们的应用程序委托中创建了一个NSManagedObjectContext。它建议,如果我们在其他线程中使用的核心数据,我们应该添加一个观察者来更新我们的主要背景下保存线程的上下文时,像这样:我是否需要观察每个创建的NSManagedObjectContext的NSManagedObjectContextDidSaveNotification?

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(mergeChanges:) 
              name:NSManagedObjectContextDidSaveNotification 
              object:self.managedObjectContext]; 

applicationDidFinishLoadingWithOptions:发生一次。但是,NSManagedObjectContext的文档说:

几个系统框架在内部使用核心数据。如果您注册接收来自所有上下文的这些通知(将nil作为对象参数传递给addObserver ...方法),则可能会收到难以处理的意外通知。

这表明对象参数应该是保存的上下文(在我的情况下是背景上下文)而不是主要上下文。是这样吗?我是否需要观察我创建的每个NSManagedObjectContext的NSManagedObjectContextDidSaveNotification?

回答

4

西蒙,

-addObserver:selector:name:object:方法的目的是通知的来源。在你的情况下,它应该是背景NSManagedObjectContext

你应该观察你创建的每个环境吗?就像所有的事情一样,这取决于。例如,有时候你想使用上下文作为暂存器,永远不会保存任何东西。为什么要观察它呢?一般来说,您想要观察任何会改变持久存储的上下文。

Andrew

相关问题