Базовые данные, кажется, не принимают обновленные значения - PullRequest
1 голос
/ 02 марта 2011

У меня запущен поток обновлений, который обновляет таблицу с использованием coredata.Одна из записей называется последним обновлением.Но после завершения обновления я получаю значение последнего обновления в основном потоке и получаю устаревшее значение.

Я делаю:

[NSFetchedResultsController deleteCacheWithName:nil];

перед повторным запросом настройки,но есть ли что-то еще, что я должен / могу сделать, чтобы предупредить основную ветку о том, что он должен снова проверить физическую таблицу?

1 Ответ

2 голосов
/ 03 марта 2011

Похоже, вы не синхронизируете обновления обратно в NSManagedObjectController основного потока. Попробуйте добавить метод, подобный этому:

- (void)managedContextDidSave:(NSNotification *)n {
    if ([NSThread isMainThread]) {
        NSManagedObjectContext *context = /* Get context for main thread */;
        [context mergeChangesFromContextDidSaveNotification:n];
    } else {
        [self performSelectorOnMainThread:@selector(managedContextDidSave:) withObject:n waitUntilDone:YES];
    }
}

Затем подключите это к NSManagedObjectContextDidSaveNotification:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(managedContextDidSave:) name:NSManagedObjectContextDidSaveNotification object:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...