2012-04-29 13 views
10

複数のコアデータモデルを使用している人がいるのは興味深いですが、そのメリットは何ですか、複数のモデルのメリットがあると思うアプリケーションを開発していますが、2つ以上のコアデータモデルが必要なのはなぜですか?

iPad用の別のバージョン、iPhone用の別のバージョンのiPadが3つの主要なコンテンツを持っていますが、iPhoneにはiPad上にあるものしかありませんので、これを別のコアデータモデル私の2つのアプリでそのモデルの方が簡単になります。

私は両方で必要なエンティティをいくつか持っていますが、コピーするか、1つの大きなモデルを持つことができます。

提案がありますか?

これはもちろん共通の状況ではありませんが、他のシナリオで複数のコアデータモデルを作成する可能性がありますか?

+0

mutilpleモデルクラスを追加するには? – harshitgupta

答えて

9

さまざまな種類のデータを異なる店舗に保管することは時々意味があります。たとえば、商品カタログのように機能するアプリには、商品データベースである1つのストアと、ユーザーのお気に入り、現在の注文、および履歴を管理するストアがあります。これにより、ユーザーのデータに影響を与えずに製品データベースを更新し、製品データベース全体をコピーすることなくユーザーのデータをバックアップすることが比較的容易になります。

複数のストアを使用するもう1つのシナリオは、同じタイプのデータを格納することです。たとえば、ドキュメントベースのアプリケーションでは、通常、ドキュメントごとに別々のストアを作成します。ストアはとなります。ドキュメントはとなります。

アップデート:私は別の店舗を使用してアドレスの上に書きましたが、あなたは別のモデルを使用することについて尋ねた何。 Core Dataは、実際には別々のモデルを定義し、実行時にそれらをまとめてマージして、同じストア(または複数のストア)で使用できるようにします。したがって、明確にするために、モデルは、エンティティとそれらの間の関係を定義します。 ストアは、モデルで定義されたスキーマを使用してデータが実際に保存される場所です。複雑なモデルをいくつかの小さなモデルに分解して単純なものにしたり、時間の経過とともにモデルを修正したり、複数のモデルを使用したり、別のモデルを使用したり、別のモデルを使用したりすることがあります。上述したように、異なるタイプのデータ。

+0

モデルAのお気に入りを追加すると、モデルB(製品モデル)のオブジェクトは参照されませんか? – Daniel

+0

@ダニエル右 - 別の*店舗*のオブジェクト間にリレーションシップを作成することはできません。したがって、再度オブジェクトを見つけるための十分な情報(製品コードなど)を保存するのが一般的です。店舗とモデルの重要な違いについては、私の更新を参照してください。問題のオブジェクトがすべて同じストアに保管され、それらの間にリレーションシップを作成する必要がある場合は、先に進んで1つのモデルを使用する必要があります。 – Caleb

2

ただ1つのコアデータモデルを使用することをお勧めします。それらを分離すると、コアデータの多くの機能(データストア内のオブジェクト間の関係など)を使用することができなくなります。今必要がない場合でも、後でそれを必要とするアプリケーションに追加するアイデアを持っている。

iPadとiPhoneの両方で同じコアデータモデルを使用することはできますが、あなたがiPhoneを使用していない部分は無視してしまうことになります。それから、あなたはすべて設定され、すでにデータが利用可能です。

たとえば、読み取り専用の既存のデータセットをダウンロードする場合など、別のデータモデルを使用する価値があります。読み取り専用データセットをユーザー設定/データなど

アプリで幸運!

+0

明白なことを指摘するために、複数の店舗を使用する場合は確かに関係を使用することができます。異なる店舗のオブジェクト間の関係を作成することはできません。私はそれがあなたが意味していたことを知っていますが、上記のように状況は実際よりも悪く聞こえます。 – Caleb

+0

ありがとう、私はそれをより明確に編集しました。 –

+0

私の場合、私は共有するいくつかのエンティティを持っています。私はMediaVideo、MediaImage、MediaFileを持っていて、リモートurisを保持し、実際のファイルのローカルキャッシングを処理しています。これらを再利用したいと思います。正しく理解すれば複数のモデルではできません。 – Daniel

関連する問題