2012-02-22 8 views
1

私はすべての回答を見てきましたが、明らかに何か不足しているようです。私は以前かなり複雑なCore Dataアプリを作ってきましたが、この質問に対する答えは過去数ヶ月間私を逃しました。iOS:ユーザーデータが混在している、プリロードされたデータベースを更新する

ここに問題があります: 1)モデルに約20のエンティティがあります。 2)これらのエンティティの一部にはユーザー編集可能なオブジェクトがあり、他にはデータが事前にロードされているものがあります 3)新しいアプリケーションの更新ごとにプリロードされたエンティティを更新できるかどうかを知りたいです。

私はこれを、更新された各属性を指定することによって「手動」の方法で行うことができますが、これはあまりにも面倒です。ユーザーがアプリのアップデート版を開くと、すべてのプリロードされたエンティティを更新したいだけです。私はユーザーデータに触れたくありません。

ありがとうございました!

+0

私は同じ問題を抱えています。解決策は見つかりましたか? – realsnake

答えて

0

各レコードにバージョン番号を関連付けるために使用できるバージョン番号フィールドをスキーマに持つことができます。値がある場合は、プリロードです。次に、プリロードのものについては、アプリケーションが開いたら新しいデータを挿入し、古いデータを無視/削除します。シンプルだと思われる。

UPDATE:

私は信じている他の代替は全く異なるデータストアにあなたのプリロード・データを分離することです。私はカスタムのSQLiteファイルとCoreDataストアのユーザーデータを使ってプリロードされたデータを提供することでこれを行うアプリケーションを持っています。私はプリロードされたデータが読み込み専用であるため、SQLiteファイルをドキュメントディレクトリにコピーする必要がなくなります。つまり、更新するたびに、新しいデータファイルは、アプリケーションのインストールによって自動的に古いファイルを上書きします。ユーザーのデータはそのまま保持されます。

もちろん、プリロードされたデータが読み取り専用でない場合、コードを書く必要はありません。この場合、私はあなたのためにできることはあまりありません。あなたの問題に関する詳細はもうありません。

+0

あなたのご意見ありがとうございます!私は実際にこのようなことをやろうとしましたが、コーディングを合理化することはできません。基本的には、各バージョンの変更時に行うべきことは、バージョン属性のすべてのエンティティを調べて、更新されたオブジェクトの値をプログラムで変更することです。これを行う簡単な方法がありますか?たとえば、更新されたSQLiteファイルを使用して、ユーザーのデバイス上の既存のSQLiteファイルと照合し、必要に応じて必要なフィールドを更新できますか? – powertoold

+0

上記の更新を参照してください。あなたの問題についてより多くの洞察を持っているわけではありませんが、これは私があなたのためにできる最善のものかもしれません。 – QED

+0

ご協力ありがとうございます。私は2つの異なる永続的なストアを持つ可能性を見てきましたが、私は2つのストアの間に関係がないことを読んだので、これは必要なことです。 – powertoold