将主NSManagedObjectContext替换为后台线程中的MOC而不是合并

时间:2011-06-19 19:21:46

标签: iphone cocoa-touch cocoa core-data

使用后台线程更新Core Data时,有没有办法用后台线程中的更新上下文替换主NSManagedObjectContext而不是调用mergeChangesFromContextDidSaveNotification

我不想合并两者。我只想更新上下文来替换主要上下文。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你可能不想这样做。托管对象与MOC相关联;你不能只是改变“主要”MOC并期望应用中的所有内容都能被注意到;你必须使所有引用“主”MO的对象指向新MOC的MO。

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

答案 2 :(得分:0)

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

[self performSelectorOnMainThread:@selector(deletemainmoc)withObject:nil waitUntilDone:YES];

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