RLMMigration
Objective-C
@interface RLMMigration : NSObject
Swift
@_nonSendable(_assumed) class RLMMigration : NSObject
RLMMigration
instances encapsulate information intended to facilitate a schema migration.
A RLMMigration
instance is passed into a user-defined RLMMigrationBlock
block when updating
the version of a Realm. This instance provides access to the old and new database schemas, the
objects in the Realm, and provides functionality for modifying the Realm during the migration.
-
Enumerates all the objects of a given type in the Realm, providing both the old and new versions of each object. Within the block, object properties can only be accessed using keyed subscripting.
Warning
All objects returned are of a type specific to the current migration and should not be cast to
className
. Instead, treat them asRLMObject
s and use keyed subscripting to access properties.Declaration
Objective-C
- (void)enumerateObjects:(nonnull NSString *)className block:(nonnull RLMObjectMigrationBlock)block;
Parameters
className
The name of the
RLMObject
class to enumerate. -
Creates and returns an
RLMObject
instance of typeclassName
in the Realm being migrated.The
value
argument is used to populate the object. It can be a key-value coding compliant object, an array or dictionary returned from the methods inNSJSONSerialization
, or an array containing one element for each managed property. An exception will be thrown if any required properties are not present and those properties were not defined with default values.When passing in an
NSArray
as thevalue
argument, all properties must be present, valid and in the same order as the properties defined in the model.Declaration
Objective-C
- (nonnull RLMObject *)createObject:(nonnull NSString *)className withValue:(nonnull id)value;
Parameters
className
The name of the
RLMObject
class to create.value
The value used to populate the object.
-
Deletes an object from a Realm during a migration.
It is permitted to call this method from within the block passed to
-[enumerateObjects:block:]
.Declaration
Objective-C
- (void)deleteObject:(nonnull RLMObject *)object;
Parameters
object
Object to be deleted from the Realm being migrated.
-
Deletes the data for the class with the given name.
All objects of the given class will be deleted. If the
RLMObject
subclass no longer exists in your program, any remaining metadata for the class will be removed from the Realm file.Declaration
Objective-C
- (BOOL)deleteDataForClassName:(nonnull NSString *)name;
Parameters
name
The name of the
RLMObject
class to delete.Return Value
A Boolean value indicating whether there was any data to delete.
-
Renames a property of the given class from
oldName
tonewName
.Declaration
Objective-C
- (void)renamePropertyForClass:(nonnull NSString *)className oldName:(nonnull NSString *)oldName newName:(nonnull NSString *)newName;
Parameters
className
The name of the class whose property should be renamed. This class must be present in both the old and new Realm schemas.
oldName
The old persisted property name for the property to be renamed. There must not be a property with this name in the class as defined by the new Realm schema.
newName
The new persisted property name for the property to be renamed. There must not be a property with this name in the class as defined by the old Realm schema.