/ / Jak dodać pola do klasy modelu Realm - swift, realm

Jak dodawać pola do klasy modelu Realm - swift, realm

Moja klasa ma tylko 4 pola:

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

I chcę dodać jeszcze 2:

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

Jeśli dodaję te pola do klasy, Realm daje mi błąd z powodu nowych pól. Jak mogę zaktualizować tę klasę podczas zapisywania wszystkich danych użytkownika?

Odpowiedzi:

4 dla odpowiedzi № 1

Istnieją dwie alternatywy do rozważenia:

  1. Jeśli Twoja aplikacja jest w fazie programowania i nie została jeszcze wydana, możesz usunąć zainstalowaną aplikację i zainstalować ją ponownie. Realm użyje zaktualizowanego schematu klasy modelu podczas odtwarzania bazy danych.

  2. Jeśli Twoja aplikacja została już wydana lub chcesz zachować dane w pliku Realm, możesz z gracją zaktualizować istniejącą dziedzinę do nowego schematu. Możesz to zrobić przez przeprowadzanie migracji, który poleca Realmowi aktualizację schematuplik na dysku, aby pasował do klas modelu w aplikacji i daje szansę przeprowadzenia wszelkich modyfikacji, które mogą być potrzebne w danych w pliku Realm w celu uwzględnienia zmian w klasach modeli.


3 dla odpowiedzi № 2

Dzieje się tak, gdy Realm tworzy wewnętrzną strukturę z twoim modelem. Za każdym razem, gdy trzeba zmienić model (dzieje się to całkiem często), należy przeprowadzić migrację bieżącego modelu do nowego.

Aby to zrobić, należy:

  1. Wprowadź wszelkie zmiany, które chcesz wprowadzić w swoim Modelu danych
  2. Dodaj to do swojej aplikacji (aplikacja: didFinishLaunchingWithOptions :) w delegacie aplikacji

    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. Teraz za każdym razem, gdy zmieniasz swój schemat, po prostu dodajesz jeden do schemaVersion. Oczywiście migracje mogą być trudniejsze, ale dla twojego modelu to wystarczy.

Aby uzyskać więcej informacji, zapoznaj się Dokumentacja Realm Swift