Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 核心数据与自反关系实体_Objective C_Ios_Core Data - Fatal编程技术网

Objective c 核心数据与自反关系实体

Objective c 核心数据与自反关系实体,objective-c,ios,core-data,Objective C,Ios,Core Data,好的,我建立了一个自反关系实体(在我之前发布的一个[SO问题]的帮助下) 我相信我的设置是正确的: 我有一个实体GroupMember。我创建了一个与自身的多对多关系 然后,我添加一个实体,创建一个“子”实体,并将其设置为关系: GroupMember *groupMember = [NSEntityDescription insertNewObjectForEntityForName:@"GroupMember" inManagedObjectContext:context]; groupM

好的,我建立了一个自反关系实体(在我之前发布的一个[SO问题]的帮助下)

我相信我的设置是正确的:

我有一个实体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" =     (
    );
})
)}
获取对象:(
“(实体:GroupMember;id:0x98686b0;数据:{\n\“member\u rel\”=(\n);\n name=Ted;\n\“sub\u member\u rel\”=(\n\“0x989f390\”;\n})”,
“(实体:GroupMember;id:0x989f390;数据:{\n\“成员关系”=(\n\“0x98686b0\”\n);\n名称=“次级成员票据”;\n\“次级成员关系”=(\n);\n})”
)
2012-12-13 12:08:45.352[9539:14003]姓名:Ted
2012-12-13 12:08:45.355[9539:14003]集合:托管对象(0x83cf280)上的关系“sub_member_rel”(实体:GroupMember;id:0x98686b0;数据:{
“成员关系”=(
);
姓名=Ted;
“附属成员关系”=(
“0x989f390”
);
})有物体{(
(实体:GroupMember;id:0x989f390;数据:{
“成员关系”=(
“0x98686b0”
);
name=“附属成员法案”;
“附属成员关系”=(
);
})
)}
A) 我不太明白如何阅读这个输出。“带对象”部分是什么?该实体是否为具有关系的实体?“附属会员汇票”是否正确设置为附属会员关系

B) 当我试图取回groupMember.Sub_member_rel时,我得到了一个NSSet。如何迭代这些对象以获取子成员名称(在表视图中显示)?

a)打印
NSManagedObject
或其关系的输出通常比较详细且有些复杂。在您的情况下,首先打印关系所属的对象。然后是“带对象”部分,它由特定关系中的对象组成

B)在对多关系中,关系类型始终是
NSSet
。就像使用
NSArray
一样,您可以像这样迭代
NSSet

for (GroupMember *subGroupMember in groupMember.sub_member_rel) {
    // Do something with managedObject
}

如果需要一个数组作为表视图数据源,可以通过
NSArray*子成员=[groupMember.sub_member_rel allObjects]获得它.Ha!我把sub_member_rel设置为一个NSSet,我无法通过它。好的,这显示了我逻辑上的一个缺陷,我看到了“附属成员法案”和“附属成员法案”的附属成员/谢谢你的帮助!