RLM 마이그레이션
Objective-C
@interface RLMMigration : NSObject
Swift
@_nonSendable(_assumed) class RLMMigration : NSObject
RLMMigration
인스턴스는 스키마 마이그레이션을 용이하게 하기 위한 정보를 캡슐화합니다.
Realm 버전을 업데이트할 때 인스턴스 RLMMigration
가 사용자 정의 RLMMigrationBlock
블록으로 전달됩니다. 이 인스턴스는 이전 및 새 데이터베이스 스키마, Realm의 객체에 대한 액세스를 제공하고 마이그레이션 중에 Realm을 수정하는 기능을 제공합니다.
-
Enumerates all the objects of a given type in the Realm, providing both the old and new versions of each object. 블록 내에서는 키 입력 첨자를 사용해서만 객체 속성에 액세스할 수 있습니다.
경고
반환된 모든 객체는 현재 마이그레이션과 관련된 유형이므로
className
로 캐스팅해서는 안 됩니다. 대신 이를RLMObject
로 취급하고 키가 있는 첨자를 사용하여 속성에 액세스하세요.선언
Objective-C
- (void)enumerateObjects:(nonnull NSString *)className block:(nonnull RLMObjectMigrationBlock)block;
매개변수
className
열거할
RLMObject
클래스의 이름입니다. -
마이그레이션되는 Realm에서
className
유형의RLMObject
인스턴스를 만들고 반환합니다.value
인수는 객체를 채우는 데 사용됩니다. 키-값 코딩을 준수하는 객체,NSJSONSerialization
의 메서드에서 반환된 배열 또는 사전, 또는 각 managed 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다. 필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.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 스키마와 새 Realm 스키마 모두에 있어야 합니다.
oldName
이름을 바꿀 속성의 이전 영구 속성 이름입니다. 새 Realm 스키마에 의해 정의된 클래스에 이 이름을 가진 속성이 없어야 합니다.
newName
이름을 바꿀 속성의 새 지속형 속성 이름입니다. 이전 Realm 스키마에 의해 정의된 클래스에 이 이름을 가진 속성이 없어야 합니다.