设置:
我有两个托管上下文设置(在 iPhone 应用程序上)。我用于大多数查询的主要上下文和用于希望在后台发生的长时间运行的操作的后台上下文。
我已经针对每个托管对象上下文设置了 NSManagedObjectContextDidSaveNotification 通知。为了响应通知,我调用 mergeChangesFromContextDidSaveNotification 进行同步。每当主上下文发生变化时,我还需要在后台上下文上运行一些作业,因为现在事情的状态已经发生变化。
只要只在其中一种上下文中写入,这工作正常。在这种情况下,写在主要上下文上。但是,如果我在后台上下文中写入,则会导致无限循环。在后台上下文中保存会触发对主上下文的通知,主上下文依次合并更改并触发自己的通知,由后台上下文获取。这会触发后台上下文执行其后台作业,这些作业(如果他们写任何东西)再次开始循环。
似乎这是错误的设置,或者我需要一种方法将“在主上下文发生更改时开始处理后台作业”与更改通知分离,或者我需要将后台上下文设置为只读。
想法?与典型的“第二个上下文导入”场景不同,我相信我需要/希望我的背景上下文相对于主要上下文保持最新,以便我从我的背景中获得正确的结果工作。