IOS 7での修正のために、Core Dataベースのアプリの更新を準備しています。Xcode5およびiOS 7 SDK GMを使用します。ただし、永続ストア(UIManagedDocument
)の異なる動作に気付きました。iOS7ビルドの前は、ドキュメントフォルダーにpersistentStore
というファイルが1つしかありませんでした(2つ目のpersistentStore-journal
)。
IOS 7ビルド(クリーンインストール)には、永続ストア用の3つのファイルがあります。
persistentStore
persistentStore-wal
およびpersistentStore-shm
AppleジャーナルモードをデフォルトでWALに変更しましたか?アプリに影響があるのではないかと思います(ユーザーが前回のバージョンから更新する方法を考えてください)?WALを無効にすることをお勧めします-そして、もしそうなら、どうすればiOS 7/UIManagedDocument
でこれを行うことができますか?
はい、Apple iOS7のデフォルトのジャーナルモードをWALに変更しました。addPersistentStoreWithType:configuration:url:options:errorを呼び出すときにNSSQLitePragmasOptionをオプションに追加することでジャーナルモードを指定できます。 DELETEの以前のデフォルトモードを設定します。
NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };
私の経験では、WALはパフォーマンスを向上させますが、この投稿も参照してください。
iOS CoreData-sqlite WAL/Write-Ahead Loggingを有効にすることにはデメリットがあります