在 coredata 中获取关系对象
Posted
技术标签:
【中文标题】在 coredata 中获取关系对象【英文标题】:Getting Relationship Object in coredata 【发布时间】:2013-05-27 02:19:55 【问题描述】:我是 coredata 的新手,这是我第一次使用,所以请耐心等待我解释。 我有 2 个名为 userinfo 和 usergroups 的实体,它们都以一对多的关系相关,现在将在 userinfo 中创建 usergroups(relationshipped name) 字段。 Userinfo 和 Usercontacts 也有很多关系
用户信息包含出生日期;电子邮件;名字;姓氏;密码;称呼;用户信息ID;用户名(用户联系电话);邮政编码; 用户组;用户联系人;
Usercontacts 包含联系人描述;姓名;电话(用户联系人列表);usercontacts_id;用户信息;
用户组包含组名;mobile_contacts;mobile_number;usergroups_id;userinfo_group;
我能够获取特定用户名的用户组对象(在 userinfo 实体中是唯一的),对于特定的 mobile_contacts(在 usergoups 实体中),我可以从 Userconatcts 实体中获取相关名称。
我是这样尝试的
NSString *usermobileNumber = [[NSUserDefaults standardUserDefaults] valueForKey:@"UserNumber"];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Userinfo" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *datapredicate = [NSPredicate predicateWithFormat:@"username == %@",usermobileNumber];
[fetchRequest setPredicate:datapredicate];
[context executeFetchRequest:fetchRequest onSuccess:^(NSArray *results)
NSLog(@"results %@",[[results valueForKey:@"usergroups"] objectAtIndex:0]);
for (NSString *order in results)
for (Usergroups *unit in [order usergroups])
NSLog(@"%@", unit);
[fetchRequest release];
onFailure:^(NSError *error)
NSLog(@"error %@",error);
];
任何形式的建议或帮助都会让我转移我的工作 提前致谢
【问题讨论】:
【参考方案1】:应该像迭代关系一样简单:
for (Userconatcts *contact in unit.mobile_contacts)
NSString *name = contact.name;
【讨论】:
StackMob 在运行 fetch 请求时似乎默认不包含相关对象。如果有人想出解决此问题的方法,我很感兴趣以上是关于在 coredata 中获取关系对象的主要内容,如果未能解决你的问题,请参考以下文章