2013-09-18 3 views
65

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

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

  • persistentStore
  • persistentStore-wal и
  • persistentStore-shm

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

+2

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

ответ

94

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

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

В моем опыте WAL дает более высокую производительность, но и увидеть этот пост:

iOS CoreData - are there any disadvantages to enabling sqlite WAL/Write-Ahead Logging

+4

Эй @ Энди, в вашем коде есть небольшая орфографическая ошибка. Он должен читать @ "journal_mode". – ajmccall

+1

@ajmccall Я позаботился о том, чтобы опечатка в 'journal_mode' проверяла http://sqlite.org/pragma.html для всех вариантов. –

+3

У нас есть приложение, в котором пользователи начали жаловаться, что потеряли свои данные при обновлении до последней версии, которая была скомпилирована для iOS 7. Изменение режима журнала обратно на DELETE устранило нашу проблему. – Rickster

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