Core Data: 一个多对多关联的查询问题

hikui
  • 318

我有两个类,ClassA和ClassB,关系如下:
屏幕快照-2012-11-01-下午11.22.19.png

我需要查询所有count>10的ClassA的bObjects中name为hello的ClassB的对象。

请问能不能用一个NSPredicate来表示这个查询?

回复
阅读 8.9k
2 个回答
hikui
  • 318
✓ 已被采纳

看了苹果的文档,里面写的例子:

If you use a to-many relationship, the construction of a predicate is slightly different. If you want to fetch Departments in which at least one of the employees has the first name "Matthew," for instance, you use an ANY operator as shown in the following example:
 NSPredicate *predicate = [NSPredicate predicateWithFormat:
    @"ANY employees.firstName like 'Matthew'"];

所以,我觉得查询应该是:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(name = %@) AND (ANY aObjects.count > 10)", @"hello"];
OpenFibers
  • 3.2k

脑补的,没测试。。。不好用请更正我

NSEntityDescription *entity = [NSEntityDescription
                                   entityForName:@"ClassB"
                                   inManagedObjectContext:context];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(name = %@) AND (aObjects.count > 10)", @"hello"];
[fetchRequest setPredicate:predicate];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏