1
我無法更改具有指向其他領域對象的屬性的領域對象的類名稱。例如,像這樣的課程。領域遷移 - 更改類的名稱(對於複雜類)
class OldClass: Object {
var id: String!
var dog: Dog! //this is a Realm Object (with its own table)
}
我見過如何做到這一點的簡單例子。
migration.enumerateObjects(ofType: "OldClass", { (oldObject, newObject) in
migration.create("NewClass", value: oldObject!)
})
我預計,如果兩個OldClass和的NewClass的模式是一樣的上面會工作,如果所有的性質是非境界對象。如果模式不同,我認爲你可以做這樣的事情。
migration.enumerateObjects(ofType: "OldClass", { (oldObject, newObject) in
let obj = migration.create("NewClass")
obj["id"] = (oldObject["id"] as! String)
obj["newPropertyName"] = (oldObject!["oldPropertyName"] as! Int)
})
但是,當您的對象具有指向另一個Realm對象的屬性時,這兩個示例都不起作用。至少這是我所懷疑的,因爲我得到RLMException'不能用現有的主鍵值創建對象'。
我懷疑'現有主鍵'是指Dog對象,並且在從NewClass遷移到OldClass時,遷移嘗試重新創建Dog對象(已存在)。
如何正確執行此類遷移?