1

我有三个托管对象上下文,即:

masterManagedObjectContext(NSPrivateQueueConcurrencyType), 
backgroundMangedObjectContext(NSPrivateQueueConcurrencyType), 
uiManagedObjectContext(NSMainQueueConcurrencyType)

Master是父母,另外两个是它的孩子。当我保存任何子上下文时,我会保存主上下文。但是当backgroundMangedObjectContext保存在master中时,UIManagedObjectContext并没有得到更新的数据executeFetchRequest

我如何实现这一目标?请帮忙。在过去的三天里,我非常陷入这个问题。

有一些帖子建议,当 master 被保存时,我必须使以前获取的对象无效。但我不知道该怎么做。

我试过了

[UIManagedObjectContext reset]

但没有运气。

4

1 回答 1

0

尝试这个,

您需要在 viewDidLoad 或 init 方法中添加观察者,

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextDidSave:)
name:NSManagedObjectContextDidSaveNotification object:nil];

并实现这个方法,

无论您在何处调用此方法 [context save:nil],它都会自动调用并且更改将更新到 masterContext。

- (void)contextDidSave:(NSNotification *)notification
{
    SEL selector = @selector(mergeChangesFromContextDidSaveNotification:);
    [[self masterManagedObjectContext] performSelectorOnMainThread:selector withObject:notification waitUntilDone:YES];

}
于 2013-10-22T11:44:08.553 回答