ドキュメント ディレクトリにある database.sqlite データストア ファイルを使用して、プロジェクトでコア データを使用しています。私のアプリケーションでは、この sqlite ファイルをバックアップとしてエクスポートして、後で復元することができます。バックアップは正常に機能します。
iOS6 デバイスからエクスポートしたバックアップ ファイルがあります。このバックアップ ファイルをアプリにインポートしたいと考えています。私はファイルをメールの添付ファイルとして持っており、open-in を使用してアプリで開きます。iOS6以前では問題なく動作します。同じファイルを数回インポートしようとしましたが、うまく機能します。
最近、データベース スキーマを新しいバージョンに変更しました。この新しいバージョンでは、自動移行で新しいデータベースに切り替えることができます。デバイスが iOS6 の場合、古いデータベース ファイルまたは現在エクスポートされている任意のファイルをインポートできます。何度でもできます。
これで、デバイスを iOS7 に変更すると、最近エクスポートしたファイルを何度でもインポートできます。しかし、以前にエクスポートした古いファイルをインポートしようとすると、一度インポートできます。アプリは正常に動作します。次に、もう一度インポートしようとしましたが、2 回目以降は失敗します。タイトルにあるようにエラーが発生します。iOS7 のみで、2 回連続で試行した場合のみ。
インポートされたファイルに解凍するために Scarybug ドキュメントを使用しています。次に、既存の sqlite データベース ファイルをインポートしたファイルに置き換えます。iOS6 では毎回動作し、iOS7 では初めて動作しますが、iOS7 では 2 回目から失敗します。
インポートが実行される前に、すべての変更がコミット/保存され、管理オブジェクト コンテキストがリセットされ、永続ストア コーディネーターがリセットされます。新しいファイルは古いファイルに取って代わり、長い間機能しています。問題は iOS6 からエクスポートされた同じファイルで 2 回目の試行から iOS7 でのみ見つかった
ヘルプとクエリをいただければ幸いです。ありがとう。