我正在尝试使用此查询获取具有最大 ID 的项目
realm.objects(Entity).filter("@max.id").first
它抛出一个错误,说无法解析查询,所以这似乎不是正确的方法。
如何在 Realm for Swift 上编写此查询?
最佳答案
单独使用过滤器无法完成您的任务,因为它们一次只考虑一个顶级对象。
除了这个概念性问题之外,您发布的代码还存在一些问题:
@"@max.id"
不是有效的NSPredicate
format string .NSPredicate
格式字符串必须由表达式之间的比较组成,而不是表达式本身。@max
等集合运算符必须应用于集合。在您的示例中,它被应用于Entity
。由于Entity
不是集合,因此谓词无效。不过,将集合运算符应用于Entity
上的List
属性是有效的。
像下面这样的东西应该可以满足您的需求:
let entities = realm.objects(Entity)
let id = entities.max("id") as Int?
let entity = id != nil ? entities.filter("id == %@", id!).first : nil
关于ios - 如何获取具有最大 ID 的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32804266/