마이그레이션

@frozen
public struct Migration

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

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

속성

  • 마이그레이션을 적용하기 전의 Realm을 설명하는 이전 스키마입니다.

    선언

    Swift

    public var oldSchema: Schema { get }
  • 마이그레이션을 적용한 후 Realm을 설명하는 새 스키마입니다.

    선언

    Swift

    public var newSchema: Schema { get }

마이그레이션 중 객체 변경

  • 이 Realm에서 지정된 유형의 모든 객체를 열거하여 각 객체의 이전 버전과 새 버전을 모두 제공합니다. 객체의 속성은 첨자를 사용하여 액세스할 수 있습니다.

    선언

    Swift

    public func enumerateObjects(ofType typeName: String, _ block: MigrationObjectEnumerateBlock)

    매개변수

    objectClassName

    열거할 Object 클래스의 이름입니다.

    block

    이 Realm에서 객체의 이전 버전과 새 버전을 모두 제공하는 차단입니다.

  • 마이그레이션되는 Realm에서 className 유형의 Object 를 만들고 반환합니다.

    value 인수는 객체를 채우는 데 사용됩니다. 키-값 코딩을 준수하는 객체, NSJSONSerialization 의 메서드에서 반환된 배열 또는 사전 또는 각 managed 속성에 대해 하나의 요소를 포함하는 Array 일 수 있습니다. 필수 속성이 없고 해당 속성이 기본값으로 정의되지 않은 경우 예외가 발생합니다.

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

    선언

    Swift

    @discardableResult
    public func create(_ typeName: String, value: Any = [:]) -> MigrationObject

    매개변수

    className

    생성할 Object 클래스의 이름입니다.

    value

    생성된 객체를 채우는 데 사용되는 값입니다.

    반환 값

    새로 생성된 객체입니다.

  • 마이그레이션 중에 Realm에서 객체를 삭제합니다.

    enumerate(_:block:) 에 전달된 블록 내에서 이 메서드를 호출할 수 있습니다.

    선언

    Swift

    public func delete(_ object: MigrationObject)

    매개변수

    object

    마이그레이션되는 Realm에서 삭제할 객체입니다.

  • 지정된 이름을 가진 클래스의 데이터를 삭제합니다.

    지정된 클래스의 모든 객체가 삭제됩니다. 프로그램에 Object 하위 클래스가 더 이상 존재하지 않으면 클래스에 대한 나머지 메타데이터가 Realm 파일에서 제거됩니다.

    선언

    Swift

    @discardableResult
    public func deleteData(forType typeName: String) -> Bool

    매개변수

    objectClassName

    삭제할 Object 클래스의 이름입니다.

    반환 값

    삭제할 데이터가 있는지 여부를 나타내는 부울 값입니다.

  • 지정된 클래스의 속성 이름을 oldName 에서 newName 로 바꿉니다.

    선언

    Swift

    public func renameProperty(onType typeName: String, from oldName: String, to newName: String)

    매개변수

    className

    속성의 이름을 변경해야 하는 클래스의 이름입니다. 이 클래스는 이전 Realm 스키마와 새 Realm 스키마 모두에 있어야 합니다.

    oldName

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

    newName

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