1
所以我有境界對象領域迅速變化的PrimaryKey
class RegistrationPlateDB: RLMObject {
dynamic var registrationPlate : String = ""
dynamic var user : String = ""
override static func primaryKey() -> String? {
return "registrationPlate"
} ...
,並想將其更改爲
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"
} ....
所以我寫了一個遷移
migration.enumerate(RegistrationPlateDB.className()) { oldObject, newObject in
newObject!["name"] = ""
newObject!["user"] = ""
newObject!["registrationPlate"] = ""
newObject!["plateID"] = -1
newObject!["primaryKeyProperty"] = "plateID";
}
,但我得到一個錯誤可能是因爲primaryKey的變化,因爲如果我離開那條線,它可以工作,但主鍵不會改變。
有人可以給我任何想法如何改變primaryKey。
編輯:第一個目的是爲Objective-C的境界書面
EDIT2:或者,如果有人會知道我怎麼能做出plateID自動增量
我理解沒有必要的想法爲了在遷移中聲明新的主鍵,所以我嘗試了你的建議,但我認爲現在的問題是oldObject![「registrationPlate」]是一個詞,所以我不認爲這可能會陷入低谷。 所以,如果你能告訴我是否有任何方法將plateID設置爲遷移中的自動增量? – schmru
編輯:或者如果有一種方法來重命名對象,所以我可以創建一個新的一箇舊的,然後重新創建一個複製數據。 – schmru
@schmru我更新了答案。領域不支持自動增量功能。所以你應該自己實現這個功能。如果你不需要序列號,使用'NSUUID'是最簡單的方法。如果你想用主鍵排序,你可以使用'NSDate()'來代替。 –