在Swift中将数组保存到Realm?

MJQ*_*347 10 realm swift

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

我目前的解决方案是使用a保存对象的对象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)
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

red*_*t84 7

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

let objects = List<CustomObject>()
Run Code Online (Sandbox Code Playgroud)

然后,您可以添加元素:

objects.append(object1)
Run Code Online (Sandbox Code Playgroud)

请查看官方文档的许多关系集合部分.


And*_*ndo 6

迅捷3

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

然后调用传递领域“对象”数组的函数:

saveRealmArray(myArray)
Run Code Online (Sandbox Code Playgroud)

注意:realm.add(objects)的语法与单个对象的add函数相同,但是如果您使用自动完成功能进行检查,则会发现:add(objects:Sequence)