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