Следит ли NSFetchedResultsController за всеми изменениями в постоянном хранилище?

Моя программа работает как ссылка ниже:

Обновление результатов NSFetchedResultsController без новой выборки

  1. Показывает результат NSFetchedResultsController в UITableView
  2. Получает новый объект из веб-сервиса и сохраняет его в ядро данных (в том же ракурсе контроллера, с RestKit)
  3. Обновление ракурса таблицы с уведомлением делегата 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, но он работает так же.

7
задан Community 23 May 2017 в 11:48
поделиться