2016-11-11 6 views
0

Im echten Modell zu verwenden versuchen, ein Benutzerprofil zu machen, hier ist das Modell unter:Benutzer aus Realm Objekt haben denselben Primärschlüssel Realm

class UserProfile: Object { 
dynamic var id = UUID().uuidString 
dynamic var name:String = "" 
dynamic var age = "" 
dynamic var email = "" 
dynamic var userName = "" 
dynamic var passWord = "" 

override static func primaryKey() -> String? { 
    return "id" 
} 

} 

ich Objekte in die Standard-Realm-Datei hinzufügen über eine IBAction Taste wie hier gezeigt:

@IBAction func signUpButton(_ sender: UIButton) { 



    try! realm.write { 

    user.userName = userNameTextField.text! 
    user.passWord = passWordTextField.text! 
    user.email = emailTextField.text! 
    user.name = fullNameTextField.text! 
    user.age = ageTextField.text! 
    user.id = UUID().uuidString 

    realm.add(user) 

    } 
    userQuery() 
} 

Das Problem ist, dass die erstellten Benutzerobjekte den gleichen "id"/Primärschlüssel haben:

Jane Vergo ist 17 Jahre alt ID: A6A67E2D-C9A9-4D6B- 815C-27BC22B3089B

Jake Lawson ist 19 Jahre alt ID: A6A67E2D-C9A9-4D6B-815C-27BC22B3089B

Luke Cage 20 Jahre alt ID ist: A6A67E2D-C9A9-4D6B-815C-27BC22B3089B

Gibt es trotzdem zu Machen Sie es so, dass jeder Benutzer einen anderen Primärschlüssel/ID hat?

Antwort

1

Realm ist eine Objektdatenbank, so müssen Sie jedes Mal ein neues Objekt erstellen: das funktioniert

try! realm.write { 

    user = User() // Create a new user instance 

    user.userName = userNameTextField.text! 
    user.passWord = passWordTextField.text! 
    user.email = emailTextField.text! 
    user.name = fullNameTextField.text! 
    user.age = ageTextField.text! 
    user.id = UUID().uuidString 

    realm.add(user) 

} 
+0

Ja! Obwohl das einzige Problem jetzt ist, dass jeder Benutzer jetzt genau den gleichen Primärschlüssel hat, gibt es das trotzdem, damit jeder Benutzer einen eigenen eindeutigen Schlüssel bekommt? –

+0

Was ist mehr ist, dass die Primärschlüssel jedes Mal ändert. –

+0

Es klingt wie Sie ein logisches Problem haben. Erstens, Realm lässt Sie nicht zwei getrennte Objekte mit demselben Primärschlüssel schreiben, also vermute ich, dass Sie tatsächlich nur einen in der Datenbank haben, der ständig aktualisiert wird. Verwenden Sie den Realm Browser, um zu bestätigen, was Sie in der Datenbank haben. Zweitens nehme ich an, Sie sagen, wenn Sie denselben Benutzer mehr als einmal anmelden, erhalten Sie einen anderen Primärschlüssel. Sie müssen überprüfen, ob der angemeldete Benutzer noch nicht angemeldet ist. Eine Option wäre, dass "userName" der Primärschlüssel anstelle von "id" ist. – Michael

Verwandte Themen