NSPredicate比较两组和多对多关系

时间:2013-03-07 02:04:28

标签: ios objective-c core-data

两个模型类

AUser
- name

AGroup
- users 

群组和用户分享多对多关系。

我希望检查两组是否共享完全相同的用户(不是更多用户或更少用户)

但遗憾的是我收到以下错误: to-many key not here here

请注意,我已经查看了其他SO问题,但似乎没有一个问题,因为我在过去的两个小时内尝试使用他们的方法,但我无法让它工作。或者至少我对它们并不了解。

我的谓词也可以比较两个可变集合吗?

- (BOOL)conversationExists:(NSMutableSet *)members {
    NSFetchRequest *request= [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"AGroup" inManagedObjectContext:_managedObjectContext];
    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"users==%@",members]; 
    //There is more code that I have not shown here as it is irrelevant to the question
    //Mainly The NSPredicate line is the problem
}

非常感谢你的时间。我真的很感激。

从, 新的iOS程序员

2 个答案:

答案 0 :(得分:2)

这篇文章有一个答案:How to use the "ALL" aggregate operation in a NSPredicate to filter a CoreData-based collection

基本上是这样的:

[NSPredicate predicateWithFormat:@"SUBQUERY(members, $member, $member IN %@).@count = %d", members, [members count]];

答案 1 :(得分:2)

为什么需要成为谓词?

[[groups valueForKey:@"users"] isEqualToSet:members]出了什么问题?