это немного странный вопрос, поэтому я начну с самого начала ...
Мои потребности в NSFetchedResultsController (NSFRC) - это возможность выполнять фильтрацию и сортировку после выборки объектов, главным образом потому, что фильтрация и сортировка требуют запроса самих выбранных объектов, и поэтому невозможны в NSFRC. Итак, я написал свой собственный класс, BSFetchedResultsController, который нацелен на репликацию функциональности NSFRC (уведомления делегатов, автоматическое секционирование и кэширование), но с добавленными хуками, чтобы пользователь мог устанавливать собственные блоки для фильтрации и сортировки. Код для этого класса находится здесь на github, если кто-то захочет: https://github.com/blindingskies/BSFetchedResultsController,, хотя я бы пока не счел этот класс готовым как снижение замены NSFRC.
Итак, я еще не внедрил кеширование, в основном потому, что я не совсем уверен, как Apple это реализовала. Кеши хранятся здесь в двоичных файлах:
{app dir} /Library/Caches/.CoreDataCaches/SectionInfoCaches/ {имя кэша} / sectionInfo
Итак, предположительно, моему классу нужно будет хранить свои кэши в аналогичном месте? Как эта структура организована / работает? Кэш должен хранить NSFetchPredicate (или свойства, необходимые для его повторной генерации), и он должен каким-то образом архивировать извлеченные объекты. Но NSManagedObject не соответствует NSCoding, так как же он архивирует объекты? И, наконец, во время обработки NSNotificationCenterDidChangeNotification необходимо обновить кэш.
Итак, реальный аспект этого заключается в том, как архивировать извлеченные объекты, я склоняюсь к тому, чтобы просто сохранить идентификаторы объектов в массиве? А затем просто получить эти объекты из контекста. Этого достаточно?
Если кто-нибудь задумывался о том, как реализовать