Основные данные и iOS 7: различное поведение постоянного хранилища

Я готовлю обновление для приложения на основе Core Data для исправлений с iOS 7. Я использую Xcode 5 и iOS 7 SDK GM. Однако я понял другое поведение постоянного хранилища (это UIManagedDocument): до сборки iOS 7 в папке документов был только один файл persistentStore (иногда был второй persistentStore-journal).

В iOS 7 build (чистая установка) теперь есть три файла для постоянного хранилища:

  • persistentStore
  • persistentStore-wal и
  • persistentStore-shm

По умолчанию Apple изменила режим журнала на WAL? Интересно, есть ли влияние на мое приложение (подумайте о том, как пользователи обновляют последнюю версию)? Было бы лучше отключить WAL - и если да, то как я могу сделать это с iOS 7/ UIManagedDocument?

Ответ 1

Да, Apple изменила режим журнала по умолчанию на WAL для iOS7. Вы можете указать режим журнала, добавив NSSQLitePragmasOption к параметрам при вызове addPersistentStoreWithType: configuration: url: options: error. Например. для установки предыдущего режима DELETE по умолчанию:

NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };

По моему опыту, WAL дает лучшую производительность, но также видит этот пост:

iOS CoreData - существуют ли какие-либо недостатки для включения ведения журналов WAL/Write-Ahead в sqlite.