枚举

打开 乐趣 枚举(className : String , block : ( oldObject : DynamicRealmObject , newObject : DynamicMutableRealmObject ? ) ->单位)

在迁移之前从域中遍历特定类的所有对象的便捷方法,并访问对已迁移域中相应对象的可更新DynamicMutableRealmObject引用。这样就可以执行更高级的数据映射,例如合并或拆分字段数据或在更改类型时移动数据。

一些常见场景如下所示:

// Old data model
class MigrationSample: RealmObject {
    var firstName: String = "First"
    var lastName: String = "Last"
    var property: String = "Realm"
    var type: Int = 42
}

// New data model
class MigrationSample: RealmObject {
    var fullName: String = "First Last"
    var renamedProperty: String = "Realm"
    var type: String = "42"
}

migrationContext.enumerate("MigrationSample") { oldObject: DynamicRealmObject, newObject: DynamicMutableRealmObject? ->
    newObject?.run {
        // Merge property
        set( "fullName", "${oldObject.getValue<String>("firstName")} ${ oldObject.getValue<String>("lastName") }" )

        // Rename property
        set("renamedProperty", oldObject.getValue<String>("property"))

        // Change type
        set("type", oldObject.getValue<Long>("type").toString())
    }
}

参数

class Name

要遍历旧域中所有实例的类的名称。

将为旧域中该类的每个实例触发的代码区块。 newObject将是对已迁移域中相应DynamicMutableRealmObject的引用,如果该对象已被删除,则为 null。