NSFetchedResultsControllerDelegate для обновления ячейки таблицы после объединения изменений из другого контекста - PullRequest
1 голос
/ 05 марта 2012

У меня есть TableViewController, это NSFetchedResultsControllerDelegate. Данные, отображаемые в этой таблице, обновляются в другом контексте ( RestKit ) и объединяются после уведомления. На этом этапе, если бы я должен был выполнить запрос в основном потоке ManagedObjectContext, я вижу данные, которые были обновлены другим потоком.

Когда происходит это слияние контекста, TableViewController, будучи NSFetchedResultsControllerDelegate, даже получает сообщение controller:didChangeObject:atIndexPath:forChangeType:newIndexPath. У меня проблема в том, что объект (didChangeObject) все еще содержит старые данные. Я думаю, это так, потому что все, что вызывает это сообщение, просто использует текущий NSFetchResultsController, чтобы дать мне этот объект.

Почему NSFetchResultsController объекты fetchObjects не обновляются после слияния контекста? Есть ли способ обновить fetchObjects путем слияния контекста и снова выполнить эту выборку?

1 Ответ

4 голосов
/ 12 марта 2012

Ответ был таков: объединение изменений помечает данные NSManagedObject как ошибочные, поскольку они устарели.По умолчанию интервал устаревания установлен равным бесконечности.Я хотел бы отдать должное тому, где я нашел эту информацию, но я не могу найти ее сейчас.В любом случае, установка NSManageObjectContext подобным образом позволяет этому контексту сразу увидеть обновленную информацию.

[__managedObjectContext setStalenessInterval:0];
...