2016-09-14 30 views
6

Jestem nowy w Królestwie i proszę o pomoc. stworzyłem model:Zaktualizowany model Realm Swift

class UserModel: Object { 

    dynamic var email = "" 
    dynamic var facebook_id = "" 
    dynamic var google_id = "" 
    dynamic var id = 0 
    dynamic var name = "" 
    dynamic var photo = "" 
    dynamic var someinfo = "" 
    dynamic var twitter_id = "" 

} 

Kiedy zalogować się do aplikacji, widzę moje informacje na UserProfileController. Mam również EditProfileController, w którym mogę zmienić niektóre informacje o sobie. Kiedy więc z powodzeniem zmienić, chcę zaktualizować mojego modelu domeny, i starają się to zrobić:

let realm = try! Realm() 

    try! realm.write { 
     realm.create(UserModel.self, value: ["name": self.editEmail.text!, "email": self.editEmail.text!], update: true) 
    } 

Ale niestety widzę komunikat:

''UserModel' does not have a primary key and can not be updated' 

Co jeśli chcę zaktualizować kilka własność w tym samym czasie? Czy mogę to zrobić za pomocą klucza podstawowego? Lub ... Jak można zaktualizować model Realm bez klucza podstawowego?

Odpowiedz

6

Kłamstwo Problem w tym update: true, jest używany do automatycznego zastąpienia obiekt, który ma taki sam klucz podstawowy w swoim królestwie, jeśli obiekt nie ma klucza podstawowego, ustaw update do false to będzie działać i zawsze utworzyć nowy obiekt

+0

Dziękuję za odpowiedź! Zastępuję "prawda" na "fałsz". I ten błąd już się nie pojawia. Ale mój model nie aktualizuje się ... – Roman

+0

Jeśli chcesz go zaktualizować zamiast tworzyć nowy, musisz dać mu klucz podstawowy i ustawić aktualizację na wartość true, lub pobrać obiekt i usunąć go najpierw, a następnie utworzyć nowy obiekt, to jest trochę pracy, ale tak to działa – Tj3n

+0

Rozumiem, ty. Podaj mi proszę! Jak mogę zaktualizować więcej niż jedną właściwość jednocześnie z primeryKey w jednym modelu? – Roman