我有一个“importData”函数,它从 API 中获取一堆 JSON 并将其填充到 Realm 数据库中。该 json 的一部分如下所示:
files: [
300,
19,
102
]
这些数字与我在获取这些之前已经处理/导入的 JSON 的顺序部分的 id 相关,并且基本上只是属于该组的文件列表。
这在我的 Realm 对象中是这样建模的:
class SomeGroup : Object {
let files = List<File>()
}
我需要保留这些 id 的排序顺序,以便当我链接文件关系时,文件的顺序正确。
为了获取我需要链接的文件模型,我运行如下查询:
let thefiles = realm.objects(File.self).filter("id IN %@", fileIds)
问题是这会以不同的顺序返回它们,并且 .sorted
方法只能按模型属性排序(从我从文档中可以看出)。
我考虑循环遍历结果并将它们从 Result<File>
转变为输入基本的Array<File>
或List<File>
输入以便我可以自己对它们进行排序,但是这会丢失 Realm 指针信息,因此我希望 Realm 无法创建链接。
唯一的另一件事是查询每个文件并将其单独附加到组文件关系中,但是如果我这样做,查询计数将会飙升。
有人可以建议我订购 Result<File>
的最佳方式吗?通过自定义函数/回调键入,以便它与 json 中的我的 id 数组匹配?
最佳答案
在 Realm 中维护一组对象的顺序的最佳实践是将它们简单地存储在 List
对象中。如果您可以调整逻辑来访问 SomeGroup
中的 files
属性,这似乎是最好的方法。
除此之外,尽管看起来很老套,您也可以考虑创建一个全新的 Realm Object
模型,其作用是简单地管理有序的文件列表。
class FileList : Object {
let files = List<File>()
}
关于swift - Realm 结果按回调排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40467206/