Моя программа работает как ссылка ниже:
Обновление результатов NSFetchedResultsController без новой выборки
Реализация NSFetchedResultsControllerDelegate скопирована из проекта Core Data компании Apple и моя предиксимация:
[NSPredicate predicateWithFormat:@"isMyTest == TRUE"]
Если обновление свойства переходит из TRUE в FALSE, то оно удаляет строки из представления таблицы (поскольку объект для строки находится в fetchedObjects
NSFetchedResultsController)
Однако, если обновление свойства переходит из FALSE в TRUE, то NSFetchedResultsController ничего не уведомляет, поэтому новые данные не могут быть видны в представлении таблицы. Если я обновляю BOTH NSFetchedResulsController и UITableView вручную, он показывает новые данные.
Я думал, что NSFetchedResultController следит за всеми изменениями в постоянном хранилище, не слишком ли это большая надежда? :D
(Я действительно хочу сделать это, потому что другой контроллер вида может обновлять постоянное хранилище, тогда сложно обновить контроллер вида)
Если да, то не могли бы вы дать мне знать, как я могу обновить NSFetchedResultsController красивым способом?
(update)
со ссылкой на NSfetchedResultsController, я прочитал слова ниже:
Контроллер, таким образом, фактически имеет три режима работы. имеет ли он делегата и установлено ли имя файла кэша.
Никакого слежения: делегат установлен на ноль. Контроллер просто обеспечивает доступ к данным в том виде, в каком они были во время выполнения выборки.
Отслеживание только для памяти: делегат не нуль и имя кэша файла установлено на ноль. Контроллер отслеживает объекты в своем результирующем наборе и обновляет раздел и информацию по заказу в ответ на соответствующие изменения.
Полное постоянное отслеживание: имя делегата и кэш-памяти файла - Ноль. Контроллер отслеживает объекты в своем результирующем наборе и обновляет их раздел и информация для заказа в ответ на соответствующие изменения. контроллер поддерживает постоянную кэш-память результатов своего Расчёт.
"Полное непрерывное отслеживание" не значит, что я хочу? Я установил cacheName, но он работает так же.