web-dev-qa-db-fra.com

Sauver un tableau au royaume dans Swift?

Est-il possible de sauvegarder un tableau d'objets dans Realm? Chaque fois que je modifie le tableau, il doit être enregistré dans le royaume.

Ma solution actuelle consiste à enregistrer objet pour objet avec un for loop. Pour ajouter/modifier des objets, appeler save() fera l'affaire, mais pas lorsque je lui enlève un objet.

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

}
7
MJQZ1347

Pour enregistrer des listes d'objets, vous devez utiliser un domaine List, pas un tableau rapide.

let objects = List<CustomObject>()

Ensuite, vous pouvez ajouter des éléments:

objects.append(object1)

Jetez un oeil sur à de nombreuses relations et Collections sections de les documents officiels .

6
redent84

Swift 3

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

Et ensuite, appelez la fonction en passant un tableau du domaine 'Object's:

saveRealmArray(myArray)

Remarque: realm.add (objets) a la même syntaxe que la fonction add pour un seul objet, mais si vous vérifiez avec l'auto-complétion, vous verrez qu'il existe: add (objects: Sequence)

3
Andrea.Ferrando