Iphone 将主NSManagedObjectContext替换为来自后台线程的MOC,而不是合并

Iphone 将主NSManagedObjectContext替换为来自后台线程的MOC,而不是合并,iphone,cocoa-touch,cocoa,core-data,Iphone,Cocoa Touch,Cocoa,Core Data,使用后台线程更新核心数据时,是否有方法将主NSManagedObjectContext替换为后台线程中更新的上下文,而不是调用mergeChangesFromContextDidSaveNotification 我不想把两者合并。我只希望更新的上下文替换主上下文。根据您的需要,您可以只在后台线程上保存上下文,然后在主线程上处理上下文,并在主线程上创建一个全新的上下文。您可能不想这样做。托管对象与MOC关联;你不能仅仅改变“主”MOC,期望应用程序中的所有东西都能注意到;您必须使所有引用“主”MO

使用后台线程更新核心数据时,是否有方法将主
NSManagedObjectContext
替换为后台线程中更新的上下文,而不是调用
mergeChangesFromContextDidSaveNotification


我不想把两者合并。我只希望更新的上下文替换主上下文。

根据您的需要,您可以只在后台线程上保存上下文,然后在主线程上处理上下文,并在主线程上创建一个全新的上下文。

您可能不想这样做。托管对象与MOC关联;你不能仅仅改变“主”MOC,期望应用程序中的所有东西都能注意到;您必须使所有引用“主”MOs的对象从新MOC指向MOs


-mergeChangesFromContextDidSaveNotification:
(大部分)对我来说很好。

这里的答案是在后台上下文保存之前切换回主上下文

[self-performSelectorOnMainThread:@selector(deletemainmoc),对象:nil waitUntilDone:YES]


并删除所有对象。然后,当它切换回它保存的后台线程时,您可以合并到一个干净的上下文中。

当我在后台线程上保存上下文时,它不会更新fetchedresultscontroller备份的uitableview。谢谢!我所做的是在保存背景之前擦除主线程上的上下文。然后我把两者合并了。谢谢。当我使用“合并”时,它会创建重复的条目,即将两个上下文放在一起。有没有一种方法可以合并只保留新MOC对象的位置?呃,不要创建重复对象?谢谢。我终于自己弄明白了。回答如下。也许这不是最优雅的方式,但它现在起作用了。