RLM RealmConfiguration

Objective-C

@interface RLMRealmConfiguration : NSObject <NSCopying>

Swift

@_nonSendable(_assumed) class RLMRealmConfiguration : NSObject, NSCopying

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

RLMRealmConfiguration 인스턴스는 일반 NSObject에 불과합니다. RLMRealmRLMObject와 달리 이를 변경하지 않는 한 스레드 간에 자유롭게 공유할 수 있습니다.

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

기본 구성

  • 다른 구성이 명시적으로 지정되지 않은 경우(즉, +[RLMRealm defaultRealm]).

    선언

    Objective-C

    + (nonnull instancetype)defaultConfiguration;

    Swift

    class func `default`() -> Self

    반환 값

    기본 Realm 구성입니다.

  • 기본 구성을 지정된 RLMRealmConfiguration 으로 설정합니다.

    선언

    Objective-C

    + (void)setDefaultConfiguration:(nonnull RLMRealmConfiguration *)configuration;

    Swift

    class func setDefault(_ configuration: RLMRealmConfiguration)

    매개변수

    configuration

    새로운 기본 Realm 구성입니다.

속성

  • Realm 파일의 로컬 URL입니다. inMemoryIdentifier 과 상호 배타적입니다. 두 속성 중 하나를 설정하면 다른 속성은 자동으로 무효화됩니다.

    선언

    Objective-C

    @property (nonatomic, copy, nullable) NSURL *fileURL;

    Swift

    var fileURL: URL? { get set }
  • 특정 인메모리 Realm을 식별하는 데 사용되는 문자열입니다. fileURLseedFilePath 과 상호 배타적입니다. 인메모리 식별자를 설정하면 다른 두 식별자는 자동으로 삭제됩니다.

    선언

    Objective-C

    @property (nonatomic, copy, nullable) NSString *inMemoryIdentifier;

    Swift

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

    선언

    Objective-C

    @property (nonatomic, copy, nullable) NSData *encryptionKey;

    Swift

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

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

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

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

    선언

    Objective-C

    @property (nonatomic) BOOL readOnly;

    Swift

    var readOnly: Bool { get set }
  • 현재 스키마 버전입니다.

    선언

    Objective-C

    @property (nonatomic) uint64_t schemaVersion;

    Swift

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

    선언

    Objective-C

    @property (nonatomic, copy, nullable) RLMMigrationBlock migrationBlock;

    Swift

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

    참고

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

    선언

    Objective-C

    @property (nonatomic) BOOL deleteRealmIfMigrationNeeded;

    Swift

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

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

    선언

    Objective-C

    @property (nonatomic, copy, nullable) RLMShouldCompactOnLaunchBlock shouldCompactOnLaunch;

    Swift

    var shouldCompactOnLaunch: RLMShouldCompactOnLaunchBlock? { get set }
  • Realm에서 managed 클래스입니다.

    선언

    Objective-C

    @property (nonatomic, copy, nullable) NSArray *objectClasses;

    Swift

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

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

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

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

    선언

    Objective-C

    @property (nonatomic) NSUInteger maximumNumberOfActiveVersions;

    Swift

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

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

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

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

    선언

    Objective-C

    @property (nonatomic, copy, nullable) NSURL *seedFilePath;

    Swift

    var seedFilePath: URL? { get set }
  • Atlas Device Sync와 동기화하려는 Realm의 구성 상태를 나타내는 구성 객체입니다.

    이 속성은 inMemoryIdentifierfileURL 모두와 상호 배타적입니다. 세 가지 속성 중 하나를 설정하면 다른 두 속성은 자동으로 무효화됩니다.

    ~를 참조하세요.

    RLMSyncConfiguration

    선언

    Objective-C

    @property (nonatomic, nullable) RLMSyncConfiguration *syncConfiguration;

    Swift

    var syncConfiguration: RLMSyncConfiguration? { get set }