我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