在Swift中将数组保存到Realm?

时间:2016-07-12 11:26:35

标签: swift realm

是否可以将对象数组保存到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 个答案:

答案 0 :(得分:7)

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

let objects = List<CustomObject>()

然后,您可以添加元素:

objects.append(object1)

查看to many relationshipsCollectionsthe official docs部分。

答案 1 :(得分:4)

Swift 3

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

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

saveRealmArray(myArray)

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