迁移
@frozen
public struct Migration
Migration
实例封装了旨在促进模式迁移的信息。
更新 Realm 的版本时, Migration
实例会传递到用户定义的MigrationBlock
区块中。 此实例提供对新旧数据库模式、Realm 中的对象的访问,并提供在迁移期间修改 Realm 的功能。
-
枚举此 Realm 中给定类型的所有对象,提供每个对象的旧版本和新版本。 可以使用下标访问对象的属性。
声明
Swift
public func enumerateObjects(ofType typeName: String, _ block: MigrationObjectEnumerateBlock)
参数
objectClassName
要枚举的
Object
类的名称。block
在此 Realm 中提供对象的旧版本和新版本的区块。
-
在正在迁移的 Realm 中创建并返回类型为
className
的Object
。value
参数用于填充对象。 它可以是键值编码兼容对象、从NSJSONSerialization
中的方法返回的数组或字典,或者是包含每个托管属性一个元素的Array
。 如果任何必需属性不存在且未为这些属性定义默认值,则会引发异常。传入
Array
作为value
参数时,所有属性都必须存在、有效,并且顺序与模型中定义的属性相同。声明
Swift
@discardableResult public func create(_ typeName: String, value: Any = [:]) -> MigrationObject
参数
className
要创建的
Object
类的名称。value
用于填充创建的对象的值。
返回值
新创建的对象。
-
在迁移期间从 Realm 中删除对象。
允许从传递给
enumerate(_:block:)
的区块内调用此方法。声明
Swift
public func delete(_ object: MigrationObject)
参数
object
要从正在迁移的 Realm 中删除的对象。
-
将给定类的属性从
oldName
重命名为newName
。声明
Swift
public func renameProperty(onType typeName: String, from oldName: String, to newName: String)
参数
className
应重命名其属性的类的名称。 该类必须存在于新旧 Realm 模式中。
oldName
要重命名的属性的旧名称。 根据新Realm模式的定义,类中不得存在具有此名称的属性。
newName
要重命名的属性的新名称。 根据旧Realm模式的定义,类中不得存在具有此名称的属性。