Как видно из названия, я работаю с Базовым Приложением Данных, которое заполняется объектами в разных фоновых потоках (Синтаксический анализ XML)
В моей фоновой ветке я делаю это
managedContext = [[NSManagedObjectContext alloc] init];
[managedContext setUndoManager:nil];
[managedContext setPersistentStoreCoordinator: [[DataManager sharedManager] persistentStoreCoordinator]];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:managedContext];
NSMutableArray *returnSource = [[self parseDocument:doc] retain];
[managedContext save:&error];
if (error) {
NSLog(@"saving error in datafeed");
}
[managedContext reset];
[self performSelectorOnMainThread:@selector(parseCompleteWithSource:) withObject:returnSource waitUntilDone:YES];
Метод слияния выглядит так:
NSManagedObjectContext *mainContext = [[DataManager sharedManager] managedObjectContext];
// Merge changes into the main context on the main thread
[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
[[NSNotificationCenter defaultCenter] removeObserver:self];
Я думаю, что слияние прошло успешно, но, поскольку я хочу отобразить его в UITableView, оно всегда говорит мне, что мои объекты признаны недействительными, чего следует ожидать из-за
[managedContext reset];
То, что я хочу сделать, это показать элементы, которые в данный момент находятся в базе данных, в фоновом режиме проанализировать xml и, если это закончено, я хочу обновить UITableView новыми / обновленными объектами. Как мне это сделать, могу ли я как-то «обновить» объекты в другом контексте или слияние не работает правильно?
Нужно ли мне определять что-то конкретное в Main ObjectContext?
Я попробовал разные политики слияния без какой-либо удачи.
Надеюсь, вы сможете мне помочь, спасибо!