2016-07-12 7 views
5

Ist es möglich, ein Array von Objekten unter Realm zu speichern? Jedes Mal, wenn ich das Array ändere, sollte es in Realm gespeichert werden.Array in Realm in Swift speichern?

Meine aktuelle Lösung ist Objekt für Objekt mit einem for loop zu speichern. Für das Anfügen/Modifizieren von Objekten wird das Aufrufen von save() die Aufgabe erledigen, aber nicht, wenn ich ein Objekt daraus entferne.

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

} 
+1

Was ist der Sinn von 'RealmDatabase'? Sie können die Datenbank direkt mit 'realm.objects (CustomObject.self)' abfragen. – redent84

Antwort

5

Listen von Objekten speichern Sie einen Realm List verwenden, keine Swift Array.

let objects = List<CustomObject>() 

Dann können Sie Elemente hinzufügen:

objects.append(object1) 

Werfen Sie einen Blick auf to many relationships und Collections Abschnitte the official docs.

+0

Ich löste es mit 'Ergebnisse '. – MJQZ1347

1

Swift 3

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

Und dann die Funktion aufrufen, eine Reihe von Reich ‚Objekt ist vorbei:

saveRealmArray(myArray) 

Hinweis: realm.add (Objekte) hat die gleiche Syntax des Add Funktion für ein einzelnes Objekt, aber wenn Sie mit der Autovervollständigung überprüfen, werden Sie sehen, dass es gibt: hinzufügen (Objekte: Sequenz)