CoreData:多对多关系

编程入门 行业动态 更新时间:2024-10-27 23:30:43
本文介绍了CoreData:多对多关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有两个对象,有许多关系。

这里是我的代码:

+(NSSet *)activitiesSetForMember:(Members *)member inManagedObjectContext:(NSManagedObjectContext *)context { NSSet * activitiesSet = nil; NSFetchRequest * request = [[NSFetchRequest alloc] init]; request.entity = [NSEntityDescription entityForName:@CompanyActivityinManagedObjectContext:context]; request.predicate = [NSPredicate predicateWithFormat:@hasMembers contains%@,member]; NSError * error = nil; activitiesSet = [[context executeFetchRequest:request error:& error] lastObject]; [request release]; NSLog(@count:%d,[activitiesSet count]); // se o array vem vazio(nil),nãoexiste ao tipo de Membro if(!error&&!activitiesSet) NSLog(@Error:会员没有活动相关。 return activitiesSet; }

如何获得所有 c $ c>从选定的会员?

解决方案

因为你可能已经怀疑,你的谓词有问题: / p>

也许你很困惑,因为你命名你的关系的方式。这些名字似乎表明有一些概念上的混乱。让我建议您像这样重命名您的实体和关系:

会员 - 会员 CompanyActivity - 活动 memberActivity - activities hasMembers - members

有一个更好的解决方案。属性活动是否已经完全包含您想要的活动?因此:

activitiesSet = member.activities; //根据我的命名方案

I have 2 objects, with many to many relationships.

Here's my code:

+ (NSSet *)activitiesSetForMember:(Members *)member inManagedObjectContext:(NSManagedObjectContext *)context{ NSSet *activitiesSet = nil; NSFetchRequest *request = [[NSFetchRequest alloc] init]; request.entity = [NSEntityDescription entityForName:@"CompanyActivity" inManagedObjectContext:context]; request.predicate = [NSPredicate predicateWithFormat:@"hasMembers contains %@", member]; NSError *error = nil; activitiesSet = [[context executeFetchRequest:request error:&error] lastObject]; [request release]; NSLog(@"count: %d", [activitiesSet count]); //se o array vem vazio (nil), não existe a o tipo de Membro if (!error && !activitiesSet) NSLog(@"Error: Member has no Activities related."); return activitiesSet; }

How can I get all the Activities from a selected Member? How can I construct the request do give me that?

解决方案

As you probably already suspected, something is wrong with your predicate:

Perhaps you are confused because of the way you named your relationships. The names seem to indicate that there is some conceptual muddiness. Let me suggest that you rename your entities and relationships like this:

Members - Member CompanyActivity - Activity memberActivity - activities hasMembers - members

There is a better solution. Does not the attribute activities already contain exactly the activities you want? Thus:

activitiesSet = member.activities; // according to my naming scheme

更多推荐

CoreData:多对多关系

本文发布于:2023-10-23 13:29:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1520953.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:关系   CoreData

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!