首页 文章

在Swift中将数组保存到Realm?

提问于
浏览
6

是否可以将对象数组保存到 Realm ?每当我对数组进行更改时,都应将其保存到Realm .

我目前的解决方案是使用 for loop 保存对象的对象 . 对于追加/修改对象,调用 save() 将执行该作业,但不是从我删除对象时 .

class CustomObject: Object {
    dynamic var name = ""
    dynamic var id = 0

    override static func primaryKey() -> String? {
    return "id"
    }
}

struct RealmDatabase {

    static var sharedInstance = RealmDatabase()

    var realm: Realm!

    let object0 = CustomObject()
    let object1 = CustomObject()

    var array = [object0, object1]

    init() {
        self.realm = try! Realm()
    }

    func save() {

        for object in self.array {
            try! self.realm.write {
                self.realm.add(object, update: true)
            }
        }
    }

}

2 回答

  • 2

    要保存对象列表,您必须使用Realm List ,而不是Swift数组 .

    let objects = List<CustomObject>()
    

    然后,您可以添加元素:

    objects.append(object1)
    

    看看the official docsto many relationshipsCollections部分 .

  • 6

    Swift 3

    func saveRealmArray(_ objects: [Object]) {
            let realm = try! Realm()
            try! realm.write {
                realm.add(objects)
            }
        }
    

    然后调用函数传递一个领域'对象'的数组:

    saveRealmArray(myArray)
    

    注意:realm.add(objects)具有与单个对象相同的add函数语法,但如果使用自动完成检查,则会看到:add(objects:Sequence)

相关问题