枚举

打开 乐趣 枚举(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。