5

CoreDataで関係を設定しようとしています。私は木のリストを持っています、そして各木は果物のリストを持っています。だから私はTree実体と実体を持っていFruitます。

コードでは、たとえばテーブルビューでツリーを一覧表示したいと思います。ツリーをクリックすると、そのツリーで成長している果物のリストが表示されます。

この関係を設定するにはどうすればよいですか?Fruitツリーと呼ばれる属性を与える必要がありますか?また、コードで関係を設定するにはどうすればよいですか。たとえば、作成するときにFruit、特定の関係に関連付ける方法を教えてくださいTree

4

1 に答える 1

17

ソレイユ、

これは非常に簡単です。まず、モデルは次のようになります(簡単にするために、属性はスキップしました)。

ここに画像の説明を入力してください

この場合、aTreeは0個以上Fruitのsを持つことができます(fruits関係を参照)。それどころか、aFruitにはtree関係(逆の関係)があります。

特に、fruits関係は次のようになります。

ここに画像の説明を入力してください

ここでは、多対多の関係が設定されていることがわかります。削除ルールは、ツリーを削除すると、そのフルーツも削除されることを意味します。

tree関係は次のようになります

ここに画像の説明を入力してください

果物は木に付着している場合にのみ存在できるため、これは1対1の関係です。オプションのフラグが設定されていません。したがって、フルーツを作成するときは、その親(この場合はツリー)も指定する必要があります。Nullifyルールは、フルーツを削除するときに、CoreDataがそのフルーツに関連付けられているツリーを削除しないことを意味します。指定した果物のみが削除されます。

Fruitエンティティを作成するときは、同様のパスに従う必要があります

NSManagedObject *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context];
[specificFruit setValue:parentTree forKey:@"tree"];

NSManagedObjectまたは、サブクラスを作成している場合:

Fruit *specificFruit = [NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:context];
specificFruit.tree = parentTree;

お役に立てば幸いです。

PS Xcodeをサポートせずに書いたので、コードを確認してください。

于 2013-03-05T20:45:36.190 に答える