2011-09-14 4 views
1

私は少なくとも300のエントリを持つアプリを持っています。各エントリは、無料またはアプリ内購入可能なオブジェクトを表します。アプリは販売中で、バンドルには事前に埋め込まれたsqliteファイルが付属しています。アプリが初めて実行されると、データベースがそこにあるかどうかがチェックされます。そうでなければ、バンドルからアプリケーションのディレクトリにsqliteファイルをコピーし、魔法が始まります。iPhone - coreデータの移行

時間が経過してユーザーがアプリ内オブジェクトを購入すると、データベースは購入したエントリにマークされます。

今、私は新しいバージョンをリリースしようとしています。この新しいバージョンには、オブジェクトを表す別のsqliteファイルが付属しています。構造は同じですが、新しいデータベースを表す新しいsqliteファイルでオブジェクトが追加されました。

私はドキュメントを読んでいます。私は何をする必要があるかの例を見つけていないので、私はあなたに尋ねます。どの手順を踏む必要がありますか?ユーザーが持っている現在のデータベース(バージョン1)を新しいバージョン(バージョン2)に置き換える必要がありますが、私がこれを実行している間はバージョン2が必要です。バージョン1にはすべての変更がインストールされています(つまり、購入に関する情報が含まれているエンティティのプロパティをコピーしてください。

を私はそれを行う方法を教えてください。このバージョニングていますか?移行?

感謝。

+0

コアデータを使用してデータベースのバージョンを設計/入力したか、またはsqlliteで直接再生しましたか? –

+0

コアデータを使用しました。私はtxtファイルを読んで私のためのデータベースファイルを作成するソースコード上に "データベースを構築する"モードがあります。次に、sqliteファイルを取得してバンドルし、このモードを無効にします。 – SpaceDog

答えて

3

二つのデータストアの構造が変更されていない場合(マネージドオブジェクトモデルは同じです)、バージョン管理/移行ではありません。データベースに新しいオブジェクトが存在するかどうかを確認し、存在しない場合は追加するのが最も簡単です。

もう1つの方法は、mergedModelFromBundlesを使用して両方のsqliteストアを同時に使用することです。私はそれについてはあまりよく分かりません。コード内に新しいオブジェクトを作成して追加するだけでは問題にならないかもしれません。

+0

私の問題は、オブジェクトを作成するのが比較的遅いということです...しかし、私はあなたの最初の提案がそれを行うための最善の方法だと思います。ありがとう。 – SpaceDog