Iphone 核心数据问题-选择分组依据/最大值

Iphone 核心数据问题-选择分组依据/最大值,iphone,cocoa,core-data,Iphone,Cocoa,Core Data,假设我有两个实体: 每条消息都属于一个MessageThread。如何获取所有消息线程以及该线程上对应的最后一条消息?通常,在SQL中,我会这样做: 按timeStamp=max(timeStamp)的线程从消息组中选择 首先,我认为核心数据不允许在其谓词中使用@max。有什么想法吗?我永远无法让@max工作,我仍然在寻找更好的实现 作为porkaround,我要做的是将排序描述符设置为按日期排序,然后使用fetchedResults中的objectAtIndex:0。这可能有点旧,但我最近遇

假设我有两个实体:

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

按timeStamp=max(timeStamp)的线程从消息组中选择


首先,我认为核心数据不允许在其谓词中使用@max。有什么想法吗?

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


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

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

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

我希望它能有所帮助……

但为了做到这一点,它会触发每个实例的故障。或者我可以预取它,但是所有的东西都会被载入内存。