/ / So fügen Sie einer Realm-Modellklasse Felder hinzu - swift, realm

Hinzufügen von Feldern zu einer Realm-Modellklasse - swift, realm

Meine Klasse hat nur 4 Felder:

class List: Object {
dynamic var name = ""
dynamic var date = ""
dynamic var notes = ""
dynamic var info = ""
}

Und ich möchte 2 weitere hinzufügen:

dynamic var website = ""
dynamic var telephone = ""

Wenn ich diese Felder zur Klasse hinzufüge, gibt Realm aufgrund der neuen Felder einen Fehler aus. Wie kann ich diese Klasse beim Speichern aller Benutzerdaten aktualisieren?

Antworten:

4 für die Antwort № 1

Es gibt zwei Alternativen zu beachten:

  1. Wenn sich Ihre App noch in der Entwicklung befindet und noch nicht veröffentlicht wurde, können Sie die installierte App löschen und neu installieren. Realm verwendet das aktualisierte Modellklassenschema beim Neuerstellen der Datenbank.

  2. Wenn Ihre App bereits veröffentlicht wurde oder Sie die Daten in der Realm-Datei beibehalten möchten, können Sie das vorhandene Realm problemlos auf das neue Schema aktualisieren. Sie können dies tun, indem Sie Durchführen einer Migration, die Realm anweist, das Schema zu aktualisierenDie Datei auf der Festplatte entspricht den Modellklassen in Ihrer Anwendung und gibt Ihnen die Möglichkeit, Änderungen an den Daten in der Realm-Datei vorzunehmen, um den Änderungen in Ihren Modellklassen Rechnung zu tragen.


3 für die Antwort № 2

Dies geschieht, da Realm eine interne Struktur mit Ihrem Modell erstellt. Jedes Mal, wenn Sie Ihr Modell ändern müssen (was ziemlich häufig vorkommt), müssen Sie Ihr aktuelles Modell auf ein neues Modell migrieren.

Der Weg dazu ist:

  1. Nehmen Sie alle Änderungen vor, die Sie an Ihrem Datenmodell vornehmen möchten
  2. Fügen Sie dies in Ihrer Anwendung (Anwendung: didFinishLaunchingWithOptions :) im App-Delegaten hinzu

    let config = Realm.Configuration(
    
    schemaVersion: 1,  //Increment this each time your schema changes
    migrationBlock: { migration, oldSchemaVersion in
    
    if (oldSchemaVersion < 1) {
    //If you need to transfer any data
    //(in your case you don"t right now) you will transfer here
    
    }
    })
    
    Realm.Configuration.defaultConfiguration = config
    
    let realm = try! Realm()
    
  3. Jedes Mal, wenn Sie Ihr Schema ändern, fügen Sie einfach eins zur schemaVersion hinzu. Natürlich können Migrationen kniffliger sein, aber für Ihr Modell wird dies ausreichen.

Für weitere Informationen siehe Realm Swift Dokumentation