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 中创建并返回类型为
className
的RLMObject
实例。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 中删除的对象。
-
将给定类的属性从
oldName
重命名为newName
。声明
Objective-C
- (void)renamePropertyForClass:(nonnull NSString *)className oldName:(nonnull NSString *)oldName newName:(nonnull NSString *)newName;
参数
className
应重命名其属性的类的名称。 该类必须存在于新旧 Realm 模式中。
oldName
要重命名的属性的旧持久属性名称。 根据新 Realm 模式的定义,类中不得存在具有此名称的属性。
newName
要重命名的属性的新持久属性名称。 根据旧 Realm 模式的定义,类中不得存在具有此名称的属性。