2012-03-14 5 views
0

iOSアプリケーションにアクティビティフィードを保存する必要があります。アクティビティフィードアイテムには、​​フィールドがあります。このフィールドは、システム内の多くの種類のエンティティ(実際には多くの種類のエンティティ)の1つになります。さまざまな種類のCoreData関係プロパティに最適なオブジェクトを格納するにはどうすればよいですか?

CoreDataモデルのActivityエンティティの​​関係フィールドを実装するには、どのような方法が良いですか?

idデータ型を使用できますか、NSManagedObject型を使用できますか?

回避策の1つは、CoreDataのentityIdを特別なフィールドに文字列として保存することですが、より良い方法があれば避けたいと思います。


例:、UserBlogBlogPostCommentと次のような活動が起こる可能性があります:簡単にするために

は、我々はそれほど標準ではないブログのモデルを持っているとしましょう

  • ユーザーは新しいブログを作成できます。
  • ユーザーが新しいブログ投稿を公開することがあります。
  • ブログにコメントすることができます。
  • コメントが好きかもしれません。
  • など

これらのそれぞれが交互に変更されたかが作用されている項目に関連​​関係を持っているウェブサイトで新しいActivityアイテムを生成します。

私のiPhoneアプリケーションでは、これらのアクティビティフィードアイテムをダウンロードし、翻訳して保存する必要があります。この​​フィールドを模倣するには、

私の実際のコードでは、この​​フィールドに入れることができるエンティティのタイプは約10種類あります。ここでは良いアプローチを探しています。

+0

データモデルのスキーマの仕組みをいくつか例を挙げて教えてください。管理対象オブジェクトの同じフィールドに異なるタイプのオブジェクトを格納する必要がありますか? – MrTJ

+0

@ MrTJええ、多くの種類があります。 – chakrit

答えて

1

変数型のオブジェクトのフィールドを検索/照会する必要がない場合は、NSCoderを使用してバイナリ表現に変換し、管理対象オブジェクトのBLOBフィールドに格納することをお勧めします。同じ管理対象オブジェクトの他のフィールドにいくつかのタイプ情報を保存することもできます。一方で、これらの変数オブジェクトの間で検索する必要がある場合は、各オブジェクトに対して新しい管理オブジェクトタイプ(エンティティ)を作成する必要があります。私の答えはここでもご覧ください:NSCoding VS Core data

+0

ああ、それは素敵な答えだった、ありがとう! – chakrit

+0

しかし、実際にはアプリを駄目にする巨大なSTIスキームを使用することを意味するので、「オブジェクトごとに新しい管理オブジェクトタイプを作成する」ことはできません。それがあなたが意味するものなのかどうかわからないのですか?リンクされたQのNSCoding/store JSON構造アプローチは、私にとってもっと実用的なアプローチのようです。 – chakrit

+1

"オブジェクトクラスごとの新しいエンティティ"というのは、ちょっと公式化されたものです。:)しかし、あなたがたくさんのクラスを持っていれば本当に行く方法ではありません。それから、私が提案できる唯一の方法は、オブジェクトをNSCoding/JSON構造にシリアル化することです。 – MrTJ

0

使用できるのはNSManagedObjectだけです。したがって、モデルと関係を作成し、NSManagedObjectのサブクラスになるアクティビティとペイロード用の新しいファイルを作成する必要があります。

Core Data Programing Guideをご覧ください。 そこにあなたの答えが見つかります。