2012-04-05 9 views
0

への追加します。私は多対多のリレーションシップによって関連付け2つのエンティティを有する多/多対多のコアデータ関係

Thing<<->>Tag 

managedObjectContextにバインドされたエンティティ "タグ" を、制御1 NSArrayControllerはあります。配列コントローラによってadd:and remove:action私はタグのインスタンスをコレクションに追加できます。

もmanagedObjectContextにバインドされた「シング」の実体を制御する第二NSArrayControllerはあります。

ので、コントローラのそれぞれは、そのエンティティのすべてのインスタンスを管理します。

それでは、5「タグ」と3「もの」は既に彼らのアレイコントローラにより作成されたインスタンスがあるとしましょう。
個々のタグを物にリンクしたいと思います。私は、既存のものと既存のタグのインスタンスとの関係を作成したいだけです。

  • addObject:はNSArrayControllerの正しい方法ですか?それとも、新しいmanagedObjectを作成するのですか?

    NSMutableSet *tags = [aThing mutableSetValueForKey:@"tags"]; 
    [tags addObject:existingTag]; 
    

  • はそれがに相当するだろうか?

  • タグシステムのためのいくつかのベストプラクティスはありますか?

答えて

1

コアデータモデラーのエンティティを選択してファイルメニューに移動し、新しいファイル - >コアデータ - > NSManagedObjectサブクラスを選択すると便利です(Xcodeの最新バージョンで)。 。これは、toMany関係にオブジェクトを追加するための必要なメンバーおよびメソッドを持つクラスを自動的に作成します。

tagを追加するインスタンスのthingを取得する必要があります。そのために宣言したメソッドを呼び出すことができます。そのメソッドの名前付けは、生成されたヘッダファイルから明白です。

+0

ありがとうございました。これはist add:メソッドでNSArrayControllerを使うのと同じでしょうか? – bijan

+1

NSArrayControllerにオブジェクトを追加すると、NSArrayControllerに通知されます。追加されたオブジェクトをUIで表示するには、それを行う必要があります。これとは別に 'thing'に' tag'を、 'tag'に' thing'を追加する必要があります。これは、自動生成されたaddメソッドが入ってくる場所です。 – DRVic