如何获取具有最大 ID 的项目?

How to get item with max id?

我正在尝试使用此查询获取具有最大 ID 的项目

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

它抛出了一个错误,说无法解析查询,所以这似乎不是正确的方法。

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

单独使用过滤器无法满足您的需求,因为它们一次只考虑一个顶级对象。

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

  1. @"@max.id" 不是有效的 NSPredicate format stringNSPredicate 格式字符串必须由表达式之间的比较组成,而不是表达式本身。

  2. @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

我正在使用 Xcode 8.0 和 Swift 3.0

以下对我有用:

let allEntries = realm.objects(Model.self)
if allEntries.count > 0 {
    let lastId = allEntries.max(ofProperty: "id") as Int?
    return lastId! + 1
} else {
    return 1
}

Swift 4 和 Xcode 9.3

if let personWithMaxAge = realm.objects(Person.self).max(by: { [=10=].age > .age }) {
    print(personWithMaxAge.age)
}