Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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
Core data CoreData:多对多关系_Core Data_Many To Many_Nspredicate - Fatal编程技术网

Core data CoreData:多对多关系

Core data CoreData:多对多关系,core-data,many-to-many,nspredicate,Core Data,Many To Many,Nspredicate,我有两个对象,具有多对多关系 这是我的密码: + (NSSet *)activitiesSetForMember:(Members *)member inManagedObjectContext:(NSManagedObjectContext *)context{ NSSet *activitiesSet = nil; NSFetchRequest *request = [[NSFetchRequest alloc] init]; request.entity = [NSEntityDesc

我有两个对象,具有多对多关系

这是我的密码:

+ (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;   
}

如何从选定的
成员
获取所有
活动
?我如何构造请求?do give me?

正如您可能已经怀疑的那样,您的谓词有问题:

也许你感到困惑是因为你命名关系的方式。这些名称似乎表明,在概念上存在一些混乱。我建议您重命名实体和关系,如下所示:

Members         - Member
CompanyActivity - Activity
memberActivity  - activities
hasMembers      - members
有更好的解决办法。属性活动是否已经完全包含您想要的活动?因此:

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

谢谢第一个建议很好。我是CD的新手。第二条评论是正确的。不用去拿了。谢谢,RL