领域:重新排列对象列表

Realm: rearranging list of objects

请告诉我,如何按索引重新排列 Realm 对象列表中的项目? IE。我看起来像

let movingElement = array[oldIndex]
array.removeAtIndex(oldIndex)
array.insert(movingElement, atIndex: newIndex)

如果它是随意的 Swift 数组。

但是对于 List in Realm 我不能做同样的事情:

let realm = try! Realm()
var all = try! Realm().objects(element)
realm.write {
    all.removeAtIndex() // all of type 

另一种选择是

let realm = try! Realm()
let element = try! Realm().objects(Element)[oldIndex]
realm.write{
    realm.delete(element)
    realm.add(...)   // How to set index to place new object at?
}

但是如何在合适的地方插入元素呢?可能有一种正确的方法如何通过索引移动相同类型(class)领域的元素? 提前致谢!

您不能对查询结果执行此操作,因为它们是无序的(或者如果您对它们进行排序,则按特定顺序排列)。但是,如果将它们放入 Realm List(可以将其作为成员存储在 Realm 对象中),则可以使用 moveswap 方法对元素重新排序。

这是 List 类型的 API 文档:https://realm.io/docs/swift/latest/api/Classes/List.html