如何保持多个NSManagedContext同步?

Ton*_*old 2 cocoa cocoa-touch core-data

我今晚花了几个小时试图创建一个设置,我有三个托管对象上下文 - 一个附加到我的应用程序的委托,一个在NSObject子类中负责UITableView更新(通过一个NSFetchedResultsController),一个在NSOperation子类中.

我可以从NSOperation子类到app委托获得更改,通过观察NSManagedObjectContextDidSaveNotificationmergeChangesFromContextDidSaveNotification:在我的主线程上启动,但是当我尝试从我的UITableView数据源执行相同的操作时,我得到以下异常:

2010-02-19 02:00:39.750 MyApp[44687:207] Serious application error.  Exception was caught during Core Data change processing: *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0] with userInfo (null)
2010-02-19 02:00:39.750 MyApp[44687:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0]'
Run Code Online (Sandbox Code Playgroud)

我很感激任何建议 - 我之前涉及Core Data托管对象上下文的所有设计都是非常简单的1:1同步方案.我提出的甚至是可能的吗?

Mar*_*rra 9

一个更好的问题是为什么要尝试保持多个上下文同步.有两个,一个用于主应用程序,一个用于导入,但导入上下文不需要保持同步,并且您已经知道如何从导入上下文中提供主要上下文.

那么第三个背景是什么?如果它仅用于表视图更新,那么这是一个糟糕的设计,您应该为整个UI层使用单个上下文.这很可能是解决问题的正确方法,而不是试图保持三种情况在空中徘徊.