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

65

Я готовлю обновление для приложения на основе 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?

  • 2
    Возможно, посмотрите на сессию «Что нового в Core Data и iCloud» из WWDC 2013. Вы можете скачать файл PDF с developer.apple.com/wwdc/videos . Apple изменила режим ведения журнала по умолчанию для файла SQLite с «отката» на «запись с опережением записи».
Теги:
core-data
ios7
uimanageddocument

1 ответ

94
Лучший ответ

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

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

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

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

  • 4
    Эй, Энди, в твоем коде есть небольшая орфографическая ошибка. Следует читать @ "journal_mode".
  • 1
    @ajmccall Я позаботился об journal_mode в journal_mode проверьте sqlite.org/pragma.html для всех вариантов.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню