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