在Swift中的Realm.io数据库中交换两个对象

在我的应用程序中,我将数据存储在Realm数据库中并在UITableView中显示数据。 我在桌面添加了很酷的function – 现在我可以通过拖放来交换单元格。 但是现在我必须在DataBase类中添加方法来交换相关的对象。

我已经发现Realm是无序的,所以我想再增加一个属性:index。 但是因此我应该提出关于在datamodel中索引项目的所有逻辑(在索引处插入,在索引处删除等),这在我看来是错误的方法。

有趣的是有解决这类问题的常用方法吗?

即使您可以向对象添加索引,我们通常也建议您在架构中添加另一个对象类,该架构带有您要订购的对象列表。 列表/多对多关系在Realm中默认排序,为您提供方便的界面来移动对象并以各种其他方式修改顺序。

这是使用Realm数据库的List类的代码演示。 这就是我在项目中意识到的。 我把它简化为方便。 非常感谢@marius为我提供如此优雅的解决方案。

 class Item: Object { number: Int name: String convenience init(number: Int, name: String) { self.number = number self.name = name } class ItemsList: Object { var list = List() } class DataBase { static let realm = try! Realm() static var itemsList = ItemsList() static var numberOfItems: Int { return self.itemsList.list.count } class func addItemToDataBase(number: Int, name: String) { let item = Item(number: number, name: String) try! realm.write({ realm.add(item) print("Success!") }) itemsList.list.append(item) } }