Обработка нескольких управляемых объектов контекста
У меня есть три контекста управляемого объекта, а именно:
masterManagedObjectContext(NSPrivateQueueConcurrencyType),
backgroundMangedObjectContext(NSPrivateQueueConcurrencyType),
uiManagedObjectContext(NSMainQueueConcurrencyType)
Мастер - родитель, а два других - его дети. Когда я сохраняю любой дочерний контекст, я сохраняю основной контекст. Но когда backgroundMangedObjectContext
сохраняет в мастере, UIManagedObjectContext
не получил обновленные данные в executeFetchRequest
,
Как мне этого добиться? Пожалуйста помоги. Я очень сильно увлекся этим вопросом за последние три дня.
В некоторых сообщениях говорилось, что я должен сделать недействительными ранее извлеченные объекты, когда мастер будет сохранен. Но я понятия не имею, как это сделать.
Я старался
[UIManagedObjectContext reset]
Но не повезло.
1 ответ
Попробуй это,
Вам нужно добавить наблюдателя в 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];
}