2011-11-26 4 views
18

として出てきます。CoreData - 1対多のモデル化された関係は、私はコアデータモデリングに新しいです、と私は1対多の関係がどのように働くか理解に苦労しています一対一

私はTaskという親エンティティを持っています。これは、Commentエンティティのいくつかのインスタンスを持つことができます。私はこれを次のようにモデル化しました:Commentsで、Taskとの関係はtaskとなり、Taskエンティティは宛先です。 Taskには、commentsと呼ばれる関係が宛先としてCommentであり、両方の関係が逆です。

インバースを定義しないと、警告メッセージまたはエラーメッセージが表示されます。このようにモデリングしている間に、与えられたTaskの2番目のコメントを作成すると、最初のコメントが置き換えられます(1対1の関係)。

コアデータモデルに、この関係が多くのコメントを1つのTaskに許可する正しい方法はありますか? CoreDataが独自に主キーを管理するように思われるので、

また、どのように私は、与えられたタスクのためにすべてのコメントを取得するためにNSPredicateを作成するのでしょうか?

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

答えて

42

あなたは、Taskエンティティにpluralオプションを設定し、あなたの​​でそれを選択して、あなたをcommentsするTaskエンティティのrelationshipプロパティを選択する必要がまず第一に、このenter image description here

を見ることができるはずpluralがありますオプションを確認してください。あなたは、あなたがそれを新しいスキーマが古いものと同じではない文句はありません削除して再構築する必要がありsqliteのストアを使用している場合、あなたはまた、生成されたクラスを使用している場合は、あなたのNSManagedObjectを再作成する必要があります。

1対多の関係があるかどうかを確認するには、Taskエンティティには、コメントと呼ばれるプロパティがあり、クラスタイプはNSSetではありません。

あなたは、そのタスクのNSSet(comments)プロパティを反復処理する必要が与えられたタスクのためのすべてのコメントを取得する場合。

+0

ありがとうございます!私はこれらのオプションが利用可能であったことさえ知りませんでした。私はいつも私のモデルを右の窓を閉じて編集していたと思います。私は現在、コアデータがセッターとゲッター(および関係)の名前をテストする以外に、生成されたクラスを使用していません。 – tutiplain

関連する問題