【发布时间】:2019-12-19 22:24:19
【问题描述】:
目前,我的 Realm 数据库包含 MyData 对象的普通数组:
class MyData: Object {
@objc dynamic var name = ""
@objc dynamic var age = 0
}
例如,它可能包含
[
["Alice", 12],
["Bob", 13],
["Alice", 22],
["Carolina", 13],
["Bob", 20]
]
我将对其进行重新设计,以使 name 独一无二,同时保持最大的 age:
[
["Alice", 22],
["Bob", 20],
["Carolina", 13]
]
另外,我想将name 设为主键以避免将来重复。
所以我将类描述更改为
class MyData: Object {
@objc dynamic var name = ""
@objc dynamic var age = 0
override static func primaryKey() -> String? {
return "name"
}
}
现在我需要提供一个迁移块:
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
switch oldSchemaVersion {
case 0:
migration.enumerateObjects(ofType: MyData.className()) { (oldObject, newObject) in
// how to do it?
}
default:
break
}
})
我不明白在枚举块中做什么。在我的示例中,我有五个“旧”对象(没有主键),我将有三个“新”对象(有主键),那么如何进行这种转换?
【问题讨论】:
标签: ios swift realm realm-migration