Когда обновляется NSFetchedResultsController? - PullRequest
1 голос
/ 09 октября 2011

Я использую NSFetchedResultsController, который использует предикат для извлечения некоторых управляемых объектов.Я всегда предполагал, что NSFetchedResultsController обновляется при изменении объектов, то есть если у меня есть предикат "box == 3" и box изменяется на 2, он не будет выбран.

Однако, хотя я изменил объекты и сохранил контекст управляемого объекта, я все еще могу получить доступ к объекту через FRC.Даже при удалении кэша это все еще возможно.

Это правильное поведение?

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

Простой способ, например, обновить таблицу - просто установить FRC на nil и перезагрузить.Это имеет тенденцию заботиться обо всех проблемах обновления и также довольно эффективно.FRC будет лениво воссоздавать себя и заполнять ваш стол.

self.fetchedResultsController = nil;
[self.tableView reloadData];
2 голосов
/ 09 октября 2011

Вы установили делегата для NSFetchedResultsController?Когда происходят изменения в контексте управляемого объекта, делегатом NSFetchedResultsController является тот, который уведомляется об изменениях.Пожалуйста, смотрите следующее:

http://developer.apple.com/library/ios/#DOCUMENTATION/CoreData/Reference/NSFetchedResultsControllerDelegate_Protocol/Reference/Reference.html

0 голосов
/ 22 октября 2011

После некоторого дальнейшего тестирования я думаю, что можно предположить, что FRC не обновляется, пока я что-то не сделал.Я звоню -performFetch: только один раз, и я не реализовал делегат.Согласно документам FRC кажется только для регистрации уведомлений об изменениях:

Если вы установите делегата для контроллера выбранных результатов, контроллер регистрируется для получения уведомлений об измененияхиз контекста управляемого объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...