核心数据问题 - 选择组/有最大值

时间:2011-02-15 14:36:16

标签: iphone cocoa core-data

说我有两个实体:

Entities

每条消息属于一个MessageThread。如何获取该线程上的所有消息线程和相应的最后一条消息?通常,在SQL中,我会这样做:

通过具有timeStamp = max(timeStamp)

的线程从消息组中选择__

首先,我不认为Core Data在其谓词中允许@max。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这可能有点旧,但最近我遇到了类似的问题。以下是我解决问题的方法:

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Message"];
request.predicate = [NSPredicate predicateWithFormat:@"timeStamp = thread.messages.@max.timeStamp"];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"timeStamp" ascending:NO]];

我希望它有所帮助...

答案 1 :(得分:0)

我永远无法让@max工作,我仍然在寻找更好的实施方案。

我的做法是将排序描述符设置为按日期排序,然后使用fetchedResults中的objectAtIndex:0