У меня есть NSFetchedResultsController, настроенный для заполнения UITableView, на основе моего «основного» NSManagedObjectContext.
В таймере я постоянно добавляю объекты в отдельный NSManagedObjectContext, но тот, который разделяет свой NSPersistantStoreCoordinator с основным контекстом.
Я вижу отправку уведомлений NSManagedObjectContextWillSaveNotification, и когда я завершаю перезапуск приложения, у меня есть все данные из предыдущего запуска. Однако с текущим NSFetchedResultsController обновлений не происходит.
Я создал тестовый проект и поместил его здесь .
(Первоначально я думал, что это происходит из-за того, что в игре присутствует несколько потоков; однако это происходит, когда все выполняется в одном потоке).
Оригинальный вопрос
У меня есть NSFetchedResultsController, настроенный для заполнения UITableView, на основе моего «основного» NSManagedObjetContext.
В фоновом потоке я загружаю и импортирую несколько объектов в отдельный NSManagedObjectContext, но тот, который разделяет свой NSPersistantStoreCoordinator с контекстом основного потока.
Я зарегистрирован, чтобы получать уведомления NSManagedObjectContextWillSaveNotification. Когда я получаю их, я пересылаю их в основной поток и передаю их в мой основной контекст.
Используя отладчик, я могу наблюдать, как они приходят, и проверять, действительно ли они добавляют объекты в контекст. Тем не менее, мой NSFetchedResultsController не обновляется. Если я делаю все это в основном потоке, это работает. Вызов -performFetch: на контроллере приведет к его обновлению, поэтому я знаю, что это не значит, что он не видит новые объекты.
В основном это стандартный код, просто разбитый на разные потоки.