Im używam dziedziny dla mojej aplikacji na iOS, a dla tabeli mam klucz podstawowy "nazwa"
let application = Application()
application.domain = app.domain
application.name = app.name
realm.add(application)
teraz, gdy próbuje zaktualizować nazwę, generuje błąd
app?.name = newName
błąd jest
Primary key can"t be changed after an object is inserted.
Jak rozwiązać ten problem?
tak deklaruję klucz podstawowy
override static func primaryKey() -> String? {
return "name"
}
Odpowiedzi:
3 dla odpowiedzi № 1Po wstawieniu obiektu za pomocą primary key
nie możesz go modyfikować:
Od Realm Docs
klucz podstawowy został dodany do dziedziny, klucz podstawowy nie może zostać zmieniony.
Które pozostawiają Ci kilka opcji:
- Usuń i ponownie wstaw obiekt
- Zmień klucz podstawowy na coś, co się nie zmienia, na przykład
id
- Pomiń
Primary Key
. Jeśli nie definiujesz jednego, nie masz klucza podstawowego, co oznacza, że możesz mieć więcej niż jeden obiekt o tej samej wartości dla tej właściwości i nie będzie on indeksowany przez tę właściwość.