구성
Configuration
인스턴스는 Realm의 인스턴스를 만드는 데 사용되는 다양한 옵션을 설명합니다.
Configuration
인스턴스는 일반 Swift 구조체에 불과합니다. Realm
및 Object
와 달리 변경하지 않는 한 스레드 간에 자유롭게 공유할 수 있습니다.
objectClasses
속성을 설정하여 클래스 하위 집합에 대한 구성 값을 만드는 데는 많은 비용이 소요될 수 있습니다. 이 때문에 일반적으로 Realm을 열 때마다 새 값을 생성하는 대신 각 개별 구성에 대해 단일 구성 값을 캐시하고 재사용하는 것이 좋습니다.
-
구성이 명시적으로 지정되지 않은 경우
Configuration
예:Realm()
)선언
Swift
public static var defaultConfiguration: Configuration { get set }
-
init(fileURL:
inMemoryIdentifier: syncConfiguration: encryptionKey: readOnly: schemaVersion: migrationBlock: deleteRealmIfMigrationNeeded: shouldCompactOnLaunch: objectTypes: ) 새
Realm
인스턴스를 만드는 데 사용할 수 있는Configuration
을 만듭니다.참고
fileURL
,inMemoryIdentifier
및syncConfiguration
매개변수는 상호 배타적입니다. 둘 중 하나만 설정하다 하거나 기본값 파일 URL 을 사용하려면 없음을 설정합니다.선언
Swift
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: ((Int, Int) -> Bool)? = nil, objectTypes: [ObjectBase.Type]? = nil)
매개변수
fileURL
Realm 파일의 로컬 URL입니다.
inMemoryIdentifier
특정 인메모리 Realm을 식별하는 데 사용되는 문자열입니다.
syncConfiguration
MongoDB Realm 과 동기화 하려는 Realm의 경우 동기화 구성입니다.
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
Object
및EmbeddedObject
하위 클래스의 하위 집합이 Realm에서 지속되었습니다.
-
MongoDB Realm 과 동기화할 수 있도록 Realm 을 구성하는 데 사용되는 구성 값입니다.
inMemoryIdentifier
와 상호 배타적입니다.선언
Swift
public var syncConfiguration: SyncConfiguration? { get set }
-
Realm 파일의 로컬 URL입니다.
inMemoryIdentifier
과 상호 배타적입니다.선언
Swift
public var fileURL: URL? { get set }
-
특정 인메모리 을 식별하는 데 사용되는 string Realm 입니다.
fileURL
및syncConfiguration
와 상호 배타적입니다.선언
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
public var migrationBlock: MigrationBlock?
-
마이그레이션이 필요한 경우 제공된 스키마로 Realm 파일을 다시 만들지 여부입니다. 저장된 스키마가 제공된 스키마와 다르거나 저장된 스키마 버전이 이 구성의 버전과 다른 경우에 해당합니다. 이 속성을
true
로 설정하면 마이그레이션이 필요하거나 실행되어야 하는 경우 파일이 삭제됩니다.참고
이 속성을true
로 설정해도 파일 형식 마이그레이션이 비활성화되지는 않습니다.선언
Swift
public var deleteRealmIfMigrationNeeded: Bool { get set }
-
사용자에게 반환되기 전에 압축해야 하는지 여부를 결정하기 위해 프로세스 수명 동안 처음으로 Realm을 열 때 호출되는 블록입니다. 총 파일 크기(데이터 + 여유 공간)와 파일의 데이터가 사용한 총 바이트가 전달됩니다.
파일 압축을 시도해야 함을 나타내려면
true
을 반환합니다. 다른 프로세스가 압축에 액세스하면 압축을 건너뜁니다.선언
Swift
public var shouldCompactOnLaunch: ((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?
-
사람이 읽을 수 있는 구성 값에 대한 설명입니다.
선언
Swift
public var description: String { get }