Objective c 核心数据与自反关系实体
好的,我建立了一个自反关系实体(在我之前发布的一个[SO问题]的帮助下) 我相信我的设置是正确的: 我有一个实体GroupMember。我创建了一个与自身的多对多关系 然后,我添加一个实体,创建一个“子”实体,并将其设置为关系:Objective c 核心数据与自反关系实体,objective-c,ios,core-data,Objective C,Ios,Core Data,好的,我建立了一个自反关系实体(在我之前发布的一个[SO问题]的帮助下) 我相信我的设置是正确的: 我有一个实体GroupMember。我创建了一个与自身的多对多关系 然后,我添加一个实体,创建一个“子”实体,并将其设置为关系: GroupMember *groupMember = [NSEntityDescription insertNewObjectForEntityForName:@"GroupMember" inManagedObjectContext:context]; groupM
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,我无法通过它。好的,这显示了我逻辑上的一个缺陷,我看到了“附属成员法案”和“附属成员法案”的附属成员/谢谢你的帮助!