1

わかりました、私は再帰関係エンティティを設定しました (以前に投稿した [SO の質問] の助けを借りて1 .

私はそれを正しく設定したと信じています:

ここに画像の説明を入力

Entity GroupMember があります。私はそれ自体に多対多の関係を作成しました。

次に、エンティティを追加して「サブ」エンティティを作成し、それを関係に設定します。

GroupMember *groupMember = [NSEntityDescription insertNewObjectForEntityForName:@"GroupMember" inManagedObjectContext:context];
groupMember.name = @"Ted";

GroupMember *subGroupMember = [NSEntityDescription insertNewObjectForEntityForName:@"GroupMember" inManagedObjectContext:context];
subGroupMember.name = @"sub member bill";

[groupMember addSub_member_relObject:subGroupMember];

次に、関係が設定されているかどうかを確認するために、GroupMember エンティティに対してフェッチ リクエストを行います。私が返すものは次のとおりです。

fetch objects: (
    "<GroupMember: 0x83cf280> (entity: GroupMember; id: 0x98686b0 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p1> ; data: {\n    \"member_rel\" =     (\n    );\n    name = Ted;\n    \"sub_member_rel\" =     (\n        \"0x989f390 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p2>\"\n    );\n})",
    "<GroupMember: 0x83cf4a0> (entity: GroupMember; id: 0x989f390 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p2> ; data: {\n    \"member_rel\" =     (\n        \"0x98686b0 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p1>\"\n    );\n    name = \"sub member bill\";\n    \"sub_member_rel\" =     (\n    );\n})"
)
2012-12-13 12:08:45.352 [9539:14003] name: Ted
2012-12-13 12:08:45.355 [9539:14003] set: Relationship 'sub_member_rel' on managed object (0x83cf280) <GroupMember: 0x83cf280> (entity: GroupMember; id: 0x98686b0 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p1> ; data: {
    "member_rel" =     (
    );
    name = Ted;
    "sub_member_rel" =     (
        "0x989f390 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p2>"
    );
}) with objects {(
    <GroupMember: 0x83cf4a0> (entity: GroupMember; id: 0x989f390 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p2> ; data: {
    "member_rel" =     (
        "0x98686b0 <x-coredata://D9082F84-03D9-408D-B0DA-5C75C1B905AB/GroupMember/p1>"
    );
    name = "sub member bill";
    "sub_member_rel" =     (
    );
})
)}

A) この出力の読み方がよくわかりません。「オブジェクトを使用」の部分とは何ですか? それは関係を持つエンティティですか?サブ会員関係として「サブ会員請求書」が正しく設定されていますか?

B) groupMember.Sub_member_rel を取得しようとすると、NSSet が取得されます。これらのオブジェクトを繰り返し処理してサブメンバー名を取得するにはどうすればよいですか (テーブル ビューに表示するため)。

4

1 に答える 1

2

A) an またはその関係を印刷することによる出力NSManagedObjectは、通常、冗長でやや複雑です。あなたの場合、関係が属するオブジェクトが最初に出力されます。次に、その特定の関係にあるオブジェクトで構成される「with objects」部分が続きます。

B)対多関係では、関係タイプは常にNSSetです。と同じように、NSArray次のように反復できますNSSet

for (GroupMember *subGroupMember in groupMember.sub_member_rel) {
    // Do something with managedObject
}
于 2012-12-13T20:59:24.740 に答える