구성

@frozen
public struct Configuration : Sendable
extension Realm.Configuration: CustomStringConvertible
extension Realm.Configuration: Equatable

Configuration 인스턴스는 Realm의 인스턴스를 만드는 데 사용되는 다양한 옵션을 설명합니다.

Configuration 인스턴스는 일반 Swift 구조체에 불과합니다. RealmObject와 달리 변경하지 않는 한 스레드 간에 자유롭게 공유할 수 있습니다.

objectClasses 속성을 설정하여 클래스 하위 집합에 대한 구성 값을 만드는 데는 많은 비용이 소요될 수 있습니다. 이 때문에 일반적으로 Realm을 열 때마다 새 값을 생성하는 대신 각 개별 구성에 대해 단일 구성 값을 캐시하고 재사용하는 것이 좋습니다.

기본 구성

  • 구성이 명시적으로 지정되지 않은 경우 Configuration 예: Realm())

    선언

    Swift

    public static var defaultConfiguration: Configuration { get set }

초기화

  • Realm 인스턴스를 만드는 데 사용할 수 있는 Configuration 을 만듭니다.

    참고

    fileURLinMemoryIdentifier 매개변수는 상호 배타적입니다. 이 중 하나만 설정하거나, 기본 파일 URL을 사용하려면 설정하지 않음을 설정하세요. 동기화된 영역은 이(가) 인메모리 영역이 아닌 한 고유한 파일 경로를 설정합니다.

    선언

    Swift

    @preconcurrency
    public init(fileURL: URL? = URL(fileURLWithPath: RLMRealmPathForFile("default.realm"), isDirectory: false),
                inMemoryIdentifier: String? = nil,
                syncConfiguration: SyncConfiguration? = nil,
                encryptionKey: Data? = nil,
                readOnly: Bool = false,
                schemaVersion: UInt64 = 0,
                migrationBlock: MigrationBlock? = nil,
                deleteRealmIfMigrationNeeded: Bool = false,
                shouldCompactOnLaunch: (@Sendable (Int, Int) -> Bool)? = nil,
                objectTypes: [ObjectBase.Type]? = nil,
                seedFilePath: URL? = nil)

    매개변수

    fileURL

    Realm 파일의 로컬 URL입니다.

    inMemoryIdentifier

    특정 인메모리 Realm을 식별하는 데 사용되는 문자열입니다.

    syncConfiguration

    Atlas App Services와 동기화하려는 Realms의 경우 동기화 구성입니다.

    encryptionKey

    데이터를 암호화하는 데 사용할 수 있는 선택적 64바이트 키입니다.

    readOnly

    Realm이 읽기 전용인지 여부(읽기 전용 파일의 경우 참이어야 함).

    schemaVersion

    현재 스키마 버전입니다.

    migrationBlock

    Realm을 현재 버전으로 마이그레이션하는 블록입니다.

    deleteRealmIfMigrationNeeded

    true 인 경우 마이그레이션이 필요한 경우 제공된 스키마를 사용하여 Realm 파일을 다시 만듭니다.

    shouldCompactOnLaunch

    사용자에게 반환되기 전에 압축해야 하는지 여부를 결정하기 위해 프로세스 수명 동안 처음으로 Realm을 열 때 호출되는 블록입니다. 총 파일 크기(데이터 + 여유 공간)와 파일의 데이터가 사용한 총 바이트가 전달됩니다.

                               Return `true ` to indicate that an attempt to compact the file should be made.
                               The compaction will be skipped if another process is accessing it.
    
    objectTypes

    ObjectEmbeddedObject 하위 클래스의 하위 집합이 Realm에서 지속되었습니다.

    seedFilePath

    처음 열 때 fileURL에 복사될 Realm 파일의 경로입니다.

구성 속성

  • Atlas App Services와의 동기화를 위해 Realm을 구성하는 데 사용되는 구성 값입니다.

    선언

    Swift

    public var syncConfiguration: SyncConfiguration? { get set }
  • Realm 파일의 로컬 URL입니다. inMemoryIdentifier 과 상호 배타적입니다.

    선언

    Swift

    public var fileURL: URL? { get set }
  • 특정 인메모리 Realm을 식별하는 데 사용되는 문자열입니다. fileURL 과 상호 배타적입니다.

    선언

    Swift

    public var inMemoryIdentifier: String? { get set }
  • 데이터 암호화에 사용할 64바이트 키이거나 암호화가 활성화되지 않은 경우 nil 입니다.

    선언

    Swift

    public var encryptionKey: Data?
  • Realm을 읽기 전용 모드로 열지 여부입니다.

    동기화되지 않은 Realm의 경우, 쓸 수 없거나 쓸 수 없는 디렉토리에 있는 Realm 파일을 열려면 이 기능이 필요합니다. 이 기능은 파일이 열려 있는 동안 누구에게도 수정되지 않는 파일에만 사용해야 하며, 다른 스레드나 프로세스에서 쓸 수 있는 파일의 읽기 전용 보기를 만드는 데만 사용해서는 안 됩니다. 읽기 전용 모드로 열려면 Realm의 판독기/기록기 조정을 비활성화해야 하므로 다른 프로세스에서 쓰기 트랜잭션(write transaction)을 커밋하면 충돌이 발생합니다.

    동기화된 Realm은 항상 쓰기 가능해야 하며( 그렇지 않으면 동기화가 발생할 수 없음) 대신 Realm에서 쓰기 트랜잭션(write transaction)을 수행하는 것을 허용하지 않을 뿐입니다. 또한 Realm의 스키마 초기화와 같이 Realm에 수행되는 일부 자동 쓰기를 건너뜁니다. 동기화 사용자에게 쓰기 액세스 권한이 없는 Realms의 경우 readOnly = YES 설정은 반드시 필요하지는 않지만 오류 보고를 개선하고 일부 오류를 더 일찍 포착할 수 있으므로 적극 권장합니다.

    쿼리 기반 동기화를 사용하는 Realm은 읽기 전용 모드로 열 수 없습니다.

    선언

    Swift

    public var readOnly: Bool
  • 현재 스키마 버전입니다.

    선언

    Swift

    public var schemaVersion: UInt64
  • Realm을 현재 버전으로 마이그레이션하는 블록입니다.

    선언

    Swift

    @preconcurrency
    public var migrationBlock: MigrationBlock?
  • 마이그레이션이 필요한 경우 제공된 스키마로 Realm 파일을 다시 만들지 여부입니다. 저장된 스키마가 제공된 스키마와 다르거나 저장된 스키마 버전이 이 구성의 버전과 다른 경우에 해당합니다. 이 속성을 true 로 설정하면 마이그레이션이 필요하거나 실행되어야 하는 경우 파일이 삭제됩니다.

    참고

    이 속성을 true 로 설정해도 파일 형식 마이그레이션이 비활성화되지는 않습니다.

    선언

    Swift

    public var deleteRealmIfMigrationNeeded: Bool { get set }
  • 사용자에게 반환되기 전에 압축해야 하는지 여부를 결정하기 위해 프로세스 수명 동안 처음으로 Realm을 열 때 호출되는 블록입니다. 총 파일 크기(데이터 + 여유 공간)와 파일의 데이터가 사용한 총 바이트가 전달됩니다.

    파일 압축을 시도해야 함을 나타내려면 true 을 반환합니다. 다른 프로세스가 압축에 액세스하면 압축을 건너뜁니다.

    선언

    Swift

    @preconcurrency
    public var shouldCompactOnLaunch: (@Sendable (Int, Int) -> Bool)?
  • Realm에서 managed 클래스입니다.

    선언

    Swift

    public var objectTypes: [ObjectBase.Type]? { get set }
  • 쓰기 트랜잭션(write transaction)을 시작하려고 할 때 예외가 발생하기 전의 Realm 파일의 최대 라이브 버전 수입니다.

    Realm은 MVCC 스냅샷 격리를 제공하므로 한 스레드에서의 쓰기가 다른 스레드에서 읽고 있는 데이터를 덮어쓰지 않고 대신 해당 데이터의 새 사본을 작성합니다. Realm은 새로 고침되면 최신 버전의 데이터로 업데이트하고 이전 버전을 릴리스하여 후속 쓰기 트랜잭션(write transaction)으로 덮어쓸 수 있도록 합니다.

    정상적인 상황에서는 문제가 되지 않지만 활성 버전 수가 너무 많아지면 디스크의 파일 크기에 부정적인 영향을 미칩니다. 이는 한 번에 여러 스레드에 쓰기를 수행할 때, 동결된 객체를 오랫동안 유지하거나 Realm 새로 고침이 허용되지 않는 백그라운드 스레드에서 긴 작업을 수행할 때 발생할 수 있습니다.

    이 속성을 0이 아닌 값으로 설정하면 설정된 버전 수를 초과하면 대신 예외가 발생합니다. 개발 중에는 문제가 있을 수 있는 위치를 식별하는 데 도움이 되도록 이 값을 낮은 값으로 사용하거나, 프로덕션 환경에서는 너무 커서 열 수 없는 Realm 파일을 생성하는 대신 앱이 충돌하도록 할 수 있습니다.

    선언

    Swift

    public var maximumNumberOfActiveVersions: UInt?
  • Realm을 처음 열 때 빈 파일을 생성하는 대신 제공된 시드 파일 경로에서 Realm 파일을 복사하여 대신 사용합니다. 이를 사용하여 미리 채워진 데이터로 Realm 파일을 열 수 있습니다.

    구성의 대상 경로에 Realm 파일이 이미 존재하는 경우 시드 파일은 복사되지 않고 이미 존재하는 Realm이 대신 열립니다.

    참고로 동기화된 Realm 구성에서 이 매개 변수를 사용하려면 먼저 시드 Realm을 Realm.writeCopy(configuration:) 을(를) 사용하여 대상에 적절하게 복사해야 합니다.

    이 옵션은 inMemoryIdentifier 과 상호 배타적입니다. seedFilePath 을 설정하면 inMemoryIdentifier 이 삭제됩니다.

    선언

    Swift

    public var seedFilePath: URL?
  • Realm 이벤트 기록을 위한 구성입니다. nil이 아닌 값으로 설정하면 이벤트가 활성화됩니다.

    선언

    Swift

    public var eventConfiguration: EventConfiguration?

CustomStringConvertible

  • 사람이 읽을 수 있는 구성 값에 대한 설명입니다.

    선언

    Swift

    public var description: String { get }

Equatable