如何在Core Data中为多对多关系执行子查询?

时间:2011-04-29 04:47:28

标签: iphone core-data subquery

我做了一些研究,找不到简单的核心数据问题的答案。

这是简化的对象模型:

Person -->> Events
Event --> Date

我想要做的是查询所有人并按最近的事件对他们进行排序。

我在谓词中查看了SUBQUERY上的一些帖子。但是,我不知道如何查询最新的。我不能在排序描述符中使用“event.date”,因为它是NSSet不允许使用。

一些代码供参考......

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

// The following errors:    
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"event.date" ascending:NO selector:nil];

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您正在向后解决问题。您应该获取按日期排序的Event个对象,然后向每个Event对象询问其相关的Person个对象。

您可以创建子查询谓词来查找Event个对象,但不能对关系进行排序。

答案 1 :(得分:0)

我通过向Person对象添加一个新的日期字段“lastEvent”解决了这个问题,该对象使用最新的事件日期进行了更新。这样我就可以通过“lastEvent”字段进行排序。