在 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 中获取关系对象的主要内容,如果未能解决你的问题,请参考以下文章

从 CoreData 关系中获取错误实体的对象

以一对多关系从 coredata 中获取所有对象

CoreData - 按关系批量获取对象以获得更好的性能

CoreData:获取具有给定属性和给定关系的对象?

获取对象时无法访问一对多CoreData关系

获取CoreData一对多关系的索引路径?