Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 领域迁移-更改类的名称(对于复杂类)_Swift_Realm - Fatal编程技术网

Swift 领域迁移-更改类的名称(对于复杂类)

Swift 领域迁移-更改类的名称(对于复杂类),swift,realm,Swift,Realm,我无法更改具有指向其他领域对象的属性的领域对象的类名。例如,像这样的类 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 m

我无法更改具有指向其他领域对象的属性的领域对象的类名。例如,像这样的类

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对象(已经存在)


如何正确执行这种类型的迁移?

不幸的是,此功能未实现,我们在中跟踪它。您还可以在中找到一些有用的信息。

不幸的是,此功能未实现,我们将在中跟踪它。你也可以在网站上找到一些有用的信息