2012-03-05 3 views
0

Я работаю над проектом Core Data, который обрабатывает более 150000 записей. Записи отображаются в виде таблицы с помощью NSFetchedResultsController. Записи должны быть отсортированы с использованием разных атрибутов моего объекта.Сохранить NSFetchResultsController cache после убийства приложения

Чтобы сделать приложение быстрым, я создал несколько NSFetchedResultsController s с различными дескрипторами сортировки, чтобы показать соответствующие отсортированные результаты. Я инициализирую FRC, когда мое приложение запускает и удерживает пользователей в ожидании инициализации FRC. После этого, когда пользователь меняет ключ сортировки, я просто заменяю текущий FRC на новый ключ сортировки, и, следовательно, сортировка чувствует мгновенно.

Приложение работает нормально, когда оно находится в ОЗУ. Но это займет около 15-20 секунд (iPad 1) для инициализации при его уничтожении и перезапуске.

Есть ли способ сохранить данные кэширования FRC на диске, когда приложение завершает работу и восстанавливается, когда приложение перезагружается? Или есть лучшее обходное решение?

ответ

1

Uhm ... если вы укажете имя кеша, NSFetchedResultController уже должен быть сохранен на диск, поэтому я думаю, что многое зависит от того, как вы инициализируете контроллер.

Во всяком случае все надуманные кэша контроллера сохраняются в

«AppSandbox» /Library/Caches/.CoreDataCaches/SectionInfoCaches/

, и я не думаю, что они удаляются после закрытия приложения. Попробуйте играть с этим, вы можете легко получить доступ к папке Library с:

[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

Но я читал, что когда контроллер обнаружен тайник с таким же именем, как и с ним был инициализирован он проверяет, является ли он по-прежнему соответствует а затем обновить его, возможно, с огромным количеством данных, затрачивается мало времени на обновление информации кеша. Подумайте о том, как использовать NSOperation для загрузки извлеченного контроллера и ускорения работы. Возможно, начните с по умолчанию, который будет отображаться больше всего.

+0

Благодарим за расположение файлов кеша. Но только некоторые из кэшей FRC хранятся на диске (они постоянны при запуске приложений). Также я не вижу заметной разницы между поиском при первом запуске приложения или убийством и повторным запуском приложения. Я думаю, что загрузка кеша при запуске приложения может оказаться не лучшей. Я должен искать что-то еще. Я уже использую GCD для асинхронных наборов. – CodeBreaker

 Смежные вопросы

  • Нет связанных вопросов^_^