다른 영역 객체를 가리키는 속성이있는 영역 객체의 클래스 이름을 변경할 수 없습니다. 이 클래스는 예를 들어.영역 이동 - 클래스 이름 변경 (복합 클래스 용)
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)
})
개체에 다른 영역 개체를 가리키는 속성이있는 경우이 두 예제 중 어느 것도 작동하지 않습니다. RLMException '기존 기본 키 값을 사용하여 객체를 만들 수 없습니다.'라는 메시지가 표시되기 때문에 적어도 의심스러운 것입니다.
내 기존의 기본 키가 Dog 개체를 참조하고 NewClass에서 OldClass로 마이그레이션 할 때 마이그레이션이 이미 존재하는 Dog 개체를 다시 만들려고합니다.
이 마이그레이션을 어떻게 올바르게 수행합니까?