说我有两个实体:
每条消息属于一个MessageThread。如何获取该线程上的所有消息线程和相应的最后一条消息?通常,在SQL中,我会这样做:
通过具有timeStamp = max(timeStamp)
的线程从消息组中选择__首先,我不认为Core Data在其谓词中允许@max。有什么想法吗?
答案 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
。