我有三个托管对象上下文,即:
masterManagedObjectContext(NSPrivateQueueConcurrencyType),
backgroundMangedObjectContext(NSPrivateQueueConcurrencyType),
uiManagedObjectContext(NSMainQueueConcurrencyType)
师父是父母,其他两个是孩子。当我保存任何子上下文时,我会保存主上下文。但是当backgroundMangedObjectContext
保存在主版中时,UIManagedObjectContext
未在executeFetchRequest
中获取更新的数据。
我如何实现这一目标?请帮忙。过去三天我非常关注这个问题。
有些帖子暗示,当master被保存时,我必须使先前获取的对象无效。但我不知道该怎么做。
我试过
[UIManagedObjectContext reset]
但没有运气。
答案 0 :(得分: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];
}