我在我的应用中使用父/子上下文范例。父上下文是MainQueueConcurrencyType。我使用Private QueueConcurrencyType作为子节点来保存我新获取的数据(我从rss feed获得)。我使用performBlockAndWait将所有内容保存在私有上下文的线程中,就像建议的那样。一切似乎都很好。我的NSFetchedResultsController的上下文在父主上下文中设置,并且每次保存时都会调用其委托方法,这意味着私有上下文将更改与主上下文完美地合并。我甚至添加了这段代码来检查它是否确实在合并,而且它确实......
let workerContext = CoreDataStack.newPrivateQueueContext()
NSNotificationCenter.defaultCenter().addObserverForName(NSManagedObjectContextDidSaveNotification, object: workerContext, queue: NSOperationQueue.mainQueue()) { (notification) -> Void in
println(" MERGING")
CoreDataStack.defaultMainQueueContext().mergeChangesFromContextDidSaveNotification(notification)
}
所以一切看起来都很好,我的数据会在我的tableview中加载,因为它会更新。但!!当我重新加载我的应用程序时,似乎没有数据持续存在。我的表视图为空,我的提取请求返回零对象。我似乎必须再次完成整个过程。有谁知道为什么会这样?