RLMMigration

Objective-C

@interface RLMMigration : NSObject

Swift

@_nonSendable(_assumed) class RLMMigration : NSObject

RLMMigration 实例封装了旨在促进模式迁移的信息。

更新 Realm 的版本时, RLMMigration实例会传递到用户定义的RLMMigrationBlock区块中。 此实例提供对新旧数据库模式、Realm 中的对象的访问,并提供在迁移期间修改 Realm 的功能。

属性

在迁移期间更改对象

  • 枚举 Realm 中给定类型的所有对象,提供每个对象的旧版本和新版本。 在该区块中,只能使用带键下标来访问对象属性。

    警告

    返回的所有对象都是特定于当前迁移的类型,不应转换为className 。 相反,请将它们视为RLMObject并使用带键的下标来访问属性。

    声明

    Objective-C

    - (void)enumerateObjects:(nonnull NSString *)className
                       block:(nonnull RLMObjectMigrationBlock)block;

    参数

    className

    要枚举的RLMObject类的名称。

  • 在正在迁移的 Realm 中创建并返回类型为classNameRLMObject实例。

    value参数用于填充对象。 它可以是键值编码兼容对象、从NSJSONSerialization中的方法返回的数组或字典,或者是包含每个托管属性一个元素的数组。 如果任何必需属性不存在且未为这些属性定义默认值,则会引发异常。

    传入NSArray作为value参数时,所有属性都必须存在、有效,并且顺序与模型中定义的属性相同。

    声明

    Objective-C

    - (nonnull RLMObject *)createObject:(nonnull NSString *)className
                              withValue:(nonnull id)value;

    参数

    className

    要创建的RLMObject类的名称。

    value

    用于填充对象的值。

  • 在迁移期间从 Realm 中删除对象。

    允许从传递给-[enumerateObjects:block:]的区块内调用此方法。

    声明

    Objective-C

    - (void)deleteObject:(nonnull RLMObject *)object;

    参数

    object

    要从正在迁移的 Realm 中删除的对象。

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

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

    声明

    Objective-C

    - (BOOL)deleteDataForClassName:(nonnull NSString *)name;

    参数

    name

    要删除的RLMObject类的名称。

    返回值

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

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

    声明

    Objective-C

    - (void)renamePropertyForClass:(nonnull NSString *)className
                           oldName:(nonnull NSString *)oldName
                           newName:(nonnull NSString *)newName;

    参数

    className

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

    oldName

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

    newName

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