我tryig使用此查询如何获得最大ID的项目?
realm.objects(Entity).filter("@max.id").first
它抛出一个错误,说这样看来,这不是做了正确的方式,无法解析查询来获取与最大id项目。
如何在Swarm上的Realm上编写此查询?
我tryig使用此查询如何获得最大ID的项目?
realm.objects(Entity).filter("@max.id").first
它抛出一个错误,说这样看来,这不是做了正确的方式,无法解析查询来获取与最大id项目。
如何在Swarm上的Realm上编写此查询?
过滤器本身并不能完成你以后的工作,因为他们一次只考虑一个顶级对象。
除此之外概念问题,还有与你发布的代码的几个问题:
@"@max.id"
不是有效NSPredicate
format string。 NSPredicate
格式字符串必须由表达式之间的比较组成,而不是表达式本身。
集合运营商(如@max
)必须应用于集合。在你的例子中,它被应用于Entity
。由于Entity
不是集合,所以谓词无效。尽管如此,将集合运算符应用于List
属性Entity
上也是有效的。
类似下面应该做你以后:我使用的Xcode 8.0和3.0雨燕
let entities = realm.objects(Entity)
let id = entities.max("id") as Int?
let entity = id != nil ? entities.filter("id == %@", id!).first : nil
我继工作:
let allEntries = realm.objects(Model.self)
if allEntries.count > 0 {
let lastId = allEntries.max(ofProperty: "id") as Int?
return lastId! + 1
} else {
return 1
}
真棒回答,谢谢!我想知道如果从数据库加载所有元素(如果存在相当多的数字),是否会出现严重的性能损失,只是为了找到最大的ID – StackOverflower
领域的查询是懒惰的,所以只有一个'Entity'对象会被这种方法加载。 – bdash
我实际上在尝试你的代码时遇到了这个错误(对不起,我直到现在还不能测试它,但看起来非常稳固)。无法推断泛型参数'U'的参数。它似乎与'max'方法有关 – StackOverflower