So habe ich Realm ObjektRealm rasche Änderung primaryKey
class RegistrationPlateDB: RLMObject {
dynamic var registrationPlate : String = ""
dynamic var user : String = ""
override static func primaryKey() -> String? {
return "registrationPlate"
} ...
und möchte es ändern
class RegistrationPlateDB: Object {
dynamic var plateID : Int = -1
dynamic var registrationPlate : String = ""
dynamic var name : String = ""
dynamic var user : String = ""
override static func primaryKey() -> String? {
return "plateID"
} ....
So habe ich eine Migration geschrieben
migration.enumerate(RegistrationPlateDB.className()) { oldObject, newObject in
newObject!["name"] = ""
newObject!["user"] = ""
newObject!["registrationPlate"] = ""
newObject!["plateID"] = -1
newObject!["primaryKeyProperty"] = "plateID";
}
aber ich ein Fehler wahrscheinlich wegen des primaryKey-Wechsels, denn wenn ich diese Zeile verlasse, funktioniert es, aber der Primärschlüssel ändert sich nicht.
Kann jemand mir eine Idee geben, wie man den primaryKey ändert.
EDIT: Das erste Objekt wurde für Objective-c Reich geschrieben
EDIT2: Oder wenn jemand weiß, wie könnte ich plateID autoincrement hier
verstand ich die Idee nicht brauchen Ich habe meinen Vorschlag ausprobiert, aber ich denke, das Problem ist jetzt, dass OldObject! ["registrationPlate"] ein Wort ist, also glaube ich nicht, dass das durchkommen könnte. Also, wenn Sie mir sagen könnten, ob es eine Möglichkeit gibt, plateID als Autoincrement bei der Migration zu setzen? – schmru
EDIT: Oder wenn es eine Möglichkeit gibt, ein Objekt so umzubenennen, dass ich ein neues genauso wie das alte erstellen konnte, dann erstelle ich ein altes und kopiere Daten neu. – schmru
@schmru Ich habe die Antwort aktualisiert. Realm unterstützt keine Autoinkrementierungsfunktion. Sie sollten dieses Feature also selbst implementieren. Wenn Sie keine Seriennummer benötigen, ist die Verwendung von 'NSUUID' der einfachste Weg. Wenn Sie mit dem Primärschlüssel sortieren möchten, können Sie statt dessen 'NSDate()' verwenden. –