gpt4 book ai didi

swift - 使用 Realm Swift 排序问题

转载 作者:行者123 更新时间:2023-11-30 11:50:00 25 4
gpt4 key购买 nike

这里是示例代码:

let outstandingStudentIDs = ["BGHH2", "AGHH1", "DFGH", "DFGHJ"]

let realmResult = realm.objects(Student.self).filter("studentID in %@", outstandingStudentIDs)

realmResult 未按 OutstandingStudentID 保持排序。

如何进行自定义排序并在结果中保留对象类型 <Element: RealmCollectionValue>.如果将realmResult转换为Array进行排序,自从使用notificationToken后如何使其返回到Results观察结果变化

最佳答案

您应该能够链接 sorted进入该结果。

https://realm.io/docs/swift/latest#sorting ***

let realmResult = realm.objects(Student.self).filter("studentID in %", outstandingStudentIDs).sorted(byProperty: "studentID")

<罢工>

<小时/>

长答案:

要进行所需的自定义排序,您需要使用 sorted(by:) 。不幸的是,这将返回一个数组而不是 Results实例。

通常是Results实例是延迟评估的,除非您希望对其进行排序。在这种情况下,Realm 将需要遍历整个数据集以确保它以正确的顺序返回对象。如果您提供自己的比较函数,Realm 必须假定您的代码“不安全”并且可能会导致问题。

导致 Realm 爆炸的示例:

let realm = try! Realm()
try! realm.write {
_ = realm.create(Student.self, value: ["studentId": "1"])
_ = realm.create(Student.self, value: ["studentId": "2"])
}
let results = realm.objects(Student.self).sorted(by: { (_, _) -> Bool in
try! realm.write {
realm.deleteAll()
}
return false
})
print(results)

这将打印一个友好的:

[[invalid object], [invalid object], [invalid object], [invalid object]]

简短回答:

很确定这是不可能的,但我欢迎有人提出一个不错的解决方案。

关于swift - 使用 Realm Swift 排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48435460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com