如何获取具有最大 ID 的项目?
How to get item with max id?
我正在尝试使用此查询获取具有最大 ID 的项目
realm.objects(Entity).filter("@max.id").first
它抛出了一个错误,说无法解析查询,所以这似乎不是正确的方法。
如何在 Swift 的 Realm 上编写此查询?
单独使用过滤器无法满足您的需求,因为它们一次只考虑一个顶级对象。
除了概念性问题之外,您发布的代码还存在一些问题:
@"@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
我正在使用 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)
}
我正在尝试使用此查询获取具有最大 ID 的项目
realm.objects(Entity).filter("@max.id").first
它抛出了一个错误,说无法解析查询,所以这似乎不是正确的方法。
如何在 Swift 的 Realm 上编写此查询?
单独使用过滤器无法满足您的需求,因为它们一次只考虑一个顶级对象。
除了概念性问题之外,您发布的代码还存在一些问题:
@"@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
我正在使用 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)
}