1

私はかなり長い間この問題に取り組んできましたが、まだ最も効率的な対処方法を見つけていません。詳細は次のとおりです。

Core Data を使用して、アプリが表示するコンテンツを保存するアプリがあります。アプリは SQLite データベースの形式でコンテンツをダウンロードし、それをローカル バージョンとマージしようとします。ダウンロードされたコンテンツは、ユーザーが以前にダウンロードしたコンテンツと組み合わせる必要があることが多いため、これが必要です。

物事をより複雑にするために、私の側では、これらのファイルを組み合わせてダウンロードできるようにする方法も必要です (つまり、コアデータファイルに無関係な関係や孤立したオブジェクトがないようにします)。このためのエディターを既に作成しましたが、これらの sqlite ファイルをマージするという問題に再び遭遇しました。

これらの sqlite データベースが存在する場合、これらを組み合わせるより良い方法を見つけたいと思います。永続的なストア コーディネーターを使用して多くの異なるストア ファイルを追加できることを見てきましたが、すべての正しいストアを 1 つのダウンロード パッケージに調整することは、より困難で危険になります。

問題は、複数の sql ストアを使用し、それらを 1 つの便利な .sqlite ファイルにするか、シームレスに動作させる最良の方法は何ですか?

4

1 に答える 1

1

まず、これを SQLite の問題と考えないでください。コアデータの問題です。Core Data と SQLite を同じ段落で使用すると、すでに負けています。CD は (時々) SQLite をバッキング ストアとして使用しますが、その知識はこの問題の解決には役立ちません。

静的データとユーザー生成データを組み合わせる問題を解決しなければならなかったとき、私は通常、2 つの異なるデータ モデルを使用し、静的側に一意の ID を制御しました。プログラムで処理する静的データとライブデータの間の結合された参照。これは、静的データに比べてユーザーデータが小さいため、うまく機能しています。

また、別の永続ストアから値を取得できる、フェッチされたプロパティを調査することもできます。

元の静的データを更新された静的データとマージするのは間違った方法だと思います。この種の操作は、デバイス上で長時間かかります。

3 つの異なる永続ストアを使用できますか? 1 つ目はアプリケーションにバンドルされており、すぐに利用できます。2 番目は更新されたデータで、サーバーからダウンロードされ、最初のデータを完全に置き換えます。最後に、フェッチされたプロパティまたは独自の一意の ID を使用してマスター データに接続されたユーザーデータ ストアが作成されます。

Core Data がこの特定の釘に対して間違ったハンマーである可能性もあります。SQLite の専門知識が豊富で、Core Data よりも SQLite の方が快適に作業できる場合は、Core Data を飛ばしてください。すべてを直接 SQLite で行います。

于 2013-01-29T23:00:01.183 に答える