raywanderlich.comの記事をフォローしましたが、インポートとエクスポートに電子メールを使用しています。
実際には、.sqlite ファイルを圧縮し、ファイルの拡張子を .abc に変更してエクスポートを実装しました (アプリ固有の拡張子を使用してください)。このようにすると、ユーザーは拡張子を知らないため、このファイルを編集して破損する可能性は低くなります。インポートのために、ファイルを解凍して既存のモデルを置き換えるだけです。ここで、既存のデータをインポートしたファイルに置き換えるだけであることに注意してください。1つのアプリで使用しました。そして、苦情はありません。拡張子が不明な場合、編集する人はほとんどいません。
古いデータモデルに関しては、コアデータの移行を処理したことがある場合は、古いモデルを新しいモデルに移行する必要があります。
インポート中のファイルの検証に関して、.sqlite ファイルを検証できないと思いますか? 検証するには、.sqlite ファイルを開いて読み取る必要があり、それを読み取るには、スキーマと一致する必要があります。破損している場合は一致せず、アプリがクラッシュします。できることは、例外をキャッチしてエラー メッセージをスローすることだけです。
別の方法
- .sqlite ファイルの名前を .db のような名前に変更して、ユーザーが .sqlite ビューアーでファイルを開こうとしないようにします。
- xml または json としてエクスポートします。このようにして、インポート ファイルを検証することができます。インポート中に既存のデータを置き換えるだけでない場合は、簡単に検証できます。
長所 1. 簡単な方法。zip ライブラリや、xml や json との間で変換するための追加のメソッドは必要ありません。
短所
- また、インポート中に既存のデータを置き換えるだけでなく、多くのことを行う必要があります。この .sqlite から別のエンティティにすべてのエンティティをコピーする必要があります。その場合、データをjsonにエクスポートして、ファイル拡張子の名前を変更するだけです。インポート中に、json を解析し、管理対象オブジェクト コンテキストを作成/更新するだけです。この json の場合、各レコードを一意に識別するために UUID を作成します。
コア データで生成された .sqlite は通常の .sqlite ファイルではないため、ユーザーが sqllite ビューアーでこれを開こうとすると、驚くことがあります。
ファイルがアプリから消えると。それがどのように使用されているかを制御することはできません。ユーザーが破損したファイルをインポートした場合、エラー メッセージを表示するだけです。
お役に立てれば。