迁移

@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 中创建并返回类型为classNameObject

    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 中删除的对象。

  • 删除具有给定名称的类的数据。

    给定类的所有对象都将被删除。 如果程序中不再存在Object子类,则该类的所有剩余元数据都将从 Realm 文件中删除。

    声明

    Swift

    @discardableResult
    public func deleteData(forType typeName: String) -> Bool

    参数

    objectClassName

    要删除的Object类的名称。

    返回值

    布尔值,表示是否有要删除的数据。

  • 将给定类的属性从oldName重命名为newName

    声明

    Swift

    public func renameProperty(onType typeName: String, from oldName: String, to newName: String)

    参数

    className

    应重命名其属性的类的名称。 该类必须存在于新旧 Realm 模式中。

    oldName

    要重命名的属性的旧名称。 根据新Realm模式的定义,类中不得存在具有此名称的属性。

    newName

    要重命名的属性的新名称。 根据旧Realm模式的定义,类中不得存在具有此名称的属性。