1

アプリの実行中に、アプリのメインの sqlite DB のバックアップ コピーを作成したいと考えています。

1)DBがチェックポイントされている場合(その時点でwalファイルに重要なデータが含まれていない場合)、sqliteファイルをコピーするだけで安全であることを読みました。[managedContext save:] はそのチェックポイントを行いますか、それとも他に何かしなければならないことがありますか? (SQLite DB の ref -shm および -wal ファイル)

2) コア データ スタック全体を破棄する以外に、コピー中にコア データが sqlite ファイルに書き込もうとしないようにする方法はありますか? 私のアプリはユーザー入力後に頻繁に保存されますが、それを強制的に一時的にブロックする方法があればいいのにと思います。

4

2 に答える 2

1

ローカル バックアップ、iCloud との間でのバックアップのコピー、メール バックアップ、メールからのインポート、iTunes 経由のファイル コピーなど、さまざまな方法でバックアップおよび復元機能を提供するサンプル アプリをアップロードしました。これらの機能を示すビデオについては、以下のリンクを参照してください。サイトからサンプル アプリをダウンロードできます。

http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/sample-apps-explanations/backup-files/

編集

同じfileURLで新しいpersistentStoreCoordinatorを作成しmigratePersistentStore、アプリを閉じずにAPIを使用しても安全ですが、最初にメインのMOCを保存してください。私は常に JOURNAL=DELETE モードを使用して、1 つのファイルを使用するだけで済むようにしています。WAL モードを使用している場合は、sqlite で使用される 3 つのファイルすべてをバックアップする必要があります。

于 2014-03-04T02:32:25.793 に答える