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

时间:2016-05-19 12:31:43

标签: ios swift uitableview realm

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这是使用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<Item>()
}

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)
    }
}