web-dev-qa-db-ja.com

コアデータとiOS 7:永続ストアの異なる動作

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でこれを行うことができますか?

65
FrankZp

はい、Apple iOS7のデフォルトのジャーナルモードをWALに変更しました。addPersistentStoreWithType:configuration:url:options:errorを呼び出すときにNSSQLitePragmasOptionをオプションに追加することでジャーナルモードを指定できます。 DELETEの以前のデフォルトモードを設定します。

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

私の経験では、WALはパフォーマンスを向上させますが、この投稿も参照してください。

iOS CoreData-sqlite WAL/Write-Ahead Loggingを有効にすることにはデメリットがあります

95
Andy Etheridge