我正在尝试使用此查询获取具有最大id的ítem

realm.objects(Entity).filter("@max.id").first

抛出一个错误,指出无法解析查询,因此看来这不是正确的方法。

如何在Realm for Swift上编写此查询?

最佳答案

筛选器无法完成您想要做的事情,因为它们一次只考虑一个顶级对象。

除了这个概念性问题之外,您发布的代码还存在一些问题:

  • @"@max.id"不是有效的 NSPredicate format stringNSPredicate格式的字符串必须由表达式之间的比较组成,而不是单独的表达式。
  • 集合操作符(例如@max)必须应用于集合。在您的示例中,它将应用于Entity。由于Entity不是集合,因此该谓词无效。但是,将集合运算符应用于List上的Entity属性是有效的。

  • 类似于以下内容的内容应该可以满足您的需求:
    let entities = realm.objects(Entity)
    let id = entities.max("id") as Int?
    let entity = id != nil ? entities.filter("id == %@", id!).first : nil
    

    09-04 14:02
    查看更多