【发布时间】:2011-06-27 15:47:18
【问题描述】:
假设我有两个实体:
每条消息都属于单个消息线程。如何获取所有消息线程以及该线程上相应的最后一条消息?通常,在 SQL 中,我会这样做:
按具有 timeStamp=max(timeStamp) 的线程从消息组中选择 __
首先,我认为Core Data 不允许在其谓词中使用@max。有什么想法吗?
【问题讨论】:
假设我有两个实体:
每条消息都属于单个消息线程。如何获取所有消息线程以及该线程上相应的最后一条消息?通常,在 SQL 中,我会这样做:
按具有 timeStamp=max(timeStamp) 的线程从消息组中选择 __
首先,我认为Core Data 不允许在其谓词中使用@max。有什么想法吗?
【问题讨论】:
我永远无法让@max 工作,我仍在寻找更好的实现。
我做的事情是将排序描述符设置为按日期排序,然后使用 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]];
希望对你有帮助……
【讨论】: