【问题标题】:Core Data Problem - select group by/having max核心数据问题 - 选择分组/具有最大值
【发布时间】:2011-06-27 15:47:18
【问题描述】:

假设我有两个实体:

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

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

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

【问题讨论】:

    标签: iphone cocoa core-data


    【解决方案1】:

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

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

    【讨论】:

    • 但为了这样做,它会为每个实例触发一个故障。或者我可以预取它,然后一切都加载到内存中。
    【解决方案2】:

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

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

    希望对你有帮助……

    【讨论】:

      猜你喜欢
      • 2021-09-04
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多