领域结果按回调排序

时间:2016-11-07 14:09:30

标签: swift sorting realm

我有一个“importData”函数,它从API中获取一堆JSON并将其填充到领域数据库中。 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>类型,以便我可以自己对它们进行排序,但这会丢失领域指针信息因此我希望领域无法创建链接。

唯一的另一件事是查询每个文件并将其单独附加到组文件关系,但是如果我这样做,查询计数将会飙升。

有人可以告诉我通过自定义函数/回调来订购Result<File>类型的最佳方法,以便它与json中的id数组匹配吗?

1 个答案:

答案 0 :(得分:0)

维护Realm中一组对象的排序的最佳做法是将它们存储在List对象中。如果您可以调整逻辑以访问files中的SomeGroup属性,那么这似乎是最佳方法。

除此之外,尽管看似hacky,你可以考虑创建一个全新的Realm Object模型,其作用是简单地管理有序的文件列表。

class FileList : Object {
    let files = List<File>()
}