RLM 마이그레이션

Objective-C

@interface RLMMigration : NSObject

Swift

@_nonSendable(_assumed) class RLMMigration : NSObject

RLMMigration 인스턴스는 스키마 마이그레이션을 용이하게 하기 위한 정보를 캡슐화합니다.

Realm 버전을 업데이트할 때 인스턴스 RLMMigration 가 사용자 정의 RLMMigrationBlock 블록으로 전달됩니다. 이 인스턴스는 이전 및 새 데이터베이스 스키마, Realm의 객체에 대한 액세스를 제공하고 마이그레이션 중에 Realm을 수정하는 기능을 제공합니다.

속성

  • 이전 RLMSchema 을(를) 반환합니다. 이는 마이그레이션이 적용되기 전의 Realm을 설명하는 스키마입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) NS_REFINED_FOR_SWIFT RLMSchema *oldSchema;
  • RLMSchema 을 반환합니다. 이는 마이그레이션이 적용된 후 Realm을 설명하는 스키마입니다.

    선언

    Objective-C

    @property (nonatomic, readonly) NS_REFINED_FOR_SWIFT RLMSchema *newSchema;

마이그레이션 중 객체 변경

  • 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 속성에 대해 하나의 요소를 포함하는 배열일 수 있습니다. 필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

    NSArrayvalue 인수로 전달할 때 모든 속성이 존재하고 유효해야 하며 모델에 정의된 속성과 동일한 순서여야 합니다.

    선언

    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 스키마와 새 Realm 스키마 모두에 있어야 합니다.

    oldName

    이름을 바꿀 속성의 이전 영구 속성 이름입니다. 새 Realm 스키마에 의해 정의된 클래스에 이 이름을 가진 속성이 없어야 합니다.

    newName

    이름을 바꿀 속성의 새 지속형 속성 이름입니다. 이전 Realm 스키마에 의해 정의된 클래스에 이 이름을 가진 속성이 없어야 합니다.