Обработка нескольких управляемых объектов контекста

У меня есть три контекста управляемого объекта, а именно:

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];

}
Другие вопросы по тегам