RMRealmConfiguration

Objective-C

@interface RLMRealmConfiguration : NSObject <NSCopying>

Swift

@_nonSendable(_assumed) class RLMRealmConfiguration : NSObject, NSCopying

RLMRealmConfigurationインスタンスでは、Realm のインスタンスを作成するために使用されるさまざまなオプションについて説明します。

RLMRealmConfiguration インスタンスはプレーンNSObjectだけです。 RLMRealmRLMObjectとは異なり、ミューテーションしない限り、スレッド間で自由に共有できます。

クラス サブセットの構成オブジェクトの作成( objectClassesプロパティの設定)にはコストがかかる場合があります。 このため、Realm を開くたびに新しいオブジェクトを作成するのではなく、通常、個別の構成ごとに 1 つの構成オブジェクトをキャッシュして再利用する必要があります。

デフォルト構成

  • 他の構成が明示的に指定されていない場合(つまり +[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と排他関係にあります。 2 つのプロパティのいずれかを設定すると、もう 1 つのプロパティは自動的に nil アウトされます。

    宣言

    Objective-C

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

    Swift

    var fileURL: URL? { get set }
  • 特定のメモリ内 Realm を識別するために使用される string 。 fileURLおよびseedFilePathと排他関係にあります。 インメモリ識別子を設定すると、他の 2 つの識別子は自動的に nil になります。

    宣言

    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 のリーダーとライターの調整を無効にする必要があるため、別のプロセスから書込みトランザクションをコミットするとクラッシュが発生します。

    同期された Realm は常に書込み可能である必要があり(同期が発生しないため)、これは代わりに Realm で書込みトランザクションを実行することを禁止するだけです。 さらに、Realm のスキーマを初期化するためなど、Realm に行われた一部の自動書込みをスキップします。 readOnly = YESを設定することは、同期ユーザーが書込み (write) アクセス権を持たない Realm には厳密に必要ではありませんが、エラー レポート作成が改善され、一部のエラーを早期に検出できるため、強く推奨されます。

    クエリベースの同期を使用する 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 によって管理されるクラス。

    宣言

    Objective-C

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

    Swift

    var objectClasses: [Any]? { get set }
  • 書込みトランザクション (write transaction) を開始しようとする際に例外がスローされる前に、Realm ファイル内のライブ バージョンの最大数。

    Realm は MVCC スナップショットの分離を提供します。つまり、1 つのスレッドでの書込み (write) が別のスレッドで読み取られるデータを上書きせず、代わりにそのデータの新しいコピーが書込まれます。 Realm が更新を行うと、最新バージョンのデータに更新され、古いバージョンが解放され、後続の書込みトランザクション (write transaction) によって上書きできるようになります。

    通常の状況では、これは問題ではありませんが、アクティブなバージョンの数が大きくなりすぎると、ディスク上のファイルサイズに悪影響が生じます。 これは、多数の異なるスレッドに対して一度に書込みを実行する場合、固定されたオブジェクトを長時間保持する場合、または Realm の更新を許可していないバックグラウンド スレッドで長時間の操作を実行する場合に発生する可能性があります。

    このプロパティをゼロ以外の値に設定すると、設定されたバージョン数を超えると、代わりに例外がスローされます。 これは、開発中に低い値で使用すると、問題が発生しうる場所を識別したり、本番環境の使用では、開くことができないほど大きな 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 の構成状態を表す構成オブジェクト。

    このプロパティは、 inMemoryIdentifierおよびfileURLの両方と排他関係にあります。 3 つのプロパティのいずれかを設定すると、他の 2 つのプロパティは自動的に nil になります。

    詳細は、次を参照してください:

    RLMSyncConfiguration

    宣言

    Objective-C

    @property (nonatomic, nullable) RLMSyncConfiguration *syncConfiguration;

    Swift

    var syncConfiguration: RLMSyncConfiguration? { get set }