swift - Realm 结果按回调排序

标签 swift sorting realm

我有一个“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/

相关文章:

swift - 如何从 Date() 中快速获取一个月中所有 4(或 5)个单独的周?

ios - 重新定义模块 'Realm'

ios - 我们可以使用 Pencil Kit 在照片标记中添加文本、形状和签名吗?

ios - UITableviewCell 仅切换一个自定义复选标记状态不起作用 - Swift 3

swift - 如何在 Swift 3.1 中只调用一次函数?

javascript - 过滤不适用于 AngularJS 中的对象数组

ios - 对成员 'collectionView' Swift 4 的模糊引用

PHP readdir 和排序

c - 如何查找数组中整数之间是否存在共同差异?

ios - 如何使用 RLMArray 保存数组