В вашей NSFetchedResultsController
обработке таблицы зарегистрируйтесь в viewDidLoad
или loadView
для уведомления:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextDidSave:) name:@"ContextDidSave" object:nil];
Когда вторичный поток готов с новыми данными, просто сохраните контекст как обычно, а затем опубликуйте уведомление:
[[NSNotificationCenter defaultCenter] postNotificationName:@"ContextDidSave" object:managedObjectContext];
Уведомление будет обработано в вашем NSFetchedResultsController
следующим способом:
РЕДАКТИРОВАТЬ : модифицированный метод, приведенный ниже, корректно учитывает многопоточность после глубокого обсуждения с bbum.
- (void)contextDidSave:(NSNotification *)notification
{
SEL selector = @selector(mergeChangesFromContextDidSaveNotification:);
[[[[UIApplication sharedApplication] delegate] managedObjectContext] performSelectorOnMainThread:selector withObject:notification waitUntilDone:YES];
}
Для обновления пользовательского интерфейса это можно сделать автоматически, используя NSFetchedResultsController
методы делегата.
Наконец, не забудьте добавить в dealloc
метод NSFetchedResultsController
следующее:
[[NSNotificationCenter defaultCenter] removeObserver:self];