从Int列获取最大值的最佳和最有效的方法是什么?

Ian*_*ury 7 realm swift2

从Int列获取最大值的最佳和最有效的方法是什么?

想法A.

let maxId = realm.objects(Books).sorted("id").last
Run Code Online (Sandbox Code Playgroud)

想法B.

let maxId = realm.objects(Books).sorted("id", ascending: false).first
Run Code Online (Sandbox Code Playgroud)

还是另一个想法?

(是的,我的代码片段只会返回ID最高的对象,而不是实际值)

Ian*_*ury 19

继@ ProblemSlover的回答之后.我创建了一个小应用程序,它将10000个记录抛出到一个领域类中 - 调用一个函数来获取最大值并使用它来设置ID列.我想看一些指标(我跑了3次以获得平均值).正如您所看到的,MAX功能比排序/最后一次快2.3倍,比上升/第一快近8倍.有时候知道这件事很好.:)

在此输入图像描述


Pro*_*ver 15

我相信它应该以下列方式工作

 if let maxValue =  realm.objects(Books).max("id") as Int?{

 // Do some stuff 
 }
Run Code Online (Sandbox Code Playgroud)

要不就

let maxValue =  realm.objects(Books).max("id") as Int?
Run Code Online (Sandbox Code Playgroud)

为了使我的答案完整,我决定添加代码来获取最小值: realm.objects(Books).min("id") as Int?


Pat*_* J. 5

Swift 4 和 Xcode 9.3

我尝试了 ProblemSlover 的答案 - 但它不再起作用了......

但尝试一下:

let maxValue =  realm.objects(Books).max(ofProperty: "id") as Int?
Run Code Online (Sandbox Code Playgroud)