RMRealmConfiguration
Objective-C
@interface RLMRealmConfiguration : NSObject <NSCopying>
Swift
@_nonSendable(_assumed) class RLMRealmConfiguration : NSObject, NSCopying
RLMRealmConfiguration
インスタンスでは、Realm のインスタンスを作成するために使用されるさまざまなオプションについて説明します。
RLMRealmConfiguration
インスタンスはプレーンNSObject
だけです。 RLMRealm
とRLMObject
とは異なり、ミューテーションしない限り、スレッド間で自由に共有できます。
クラス サブセットの構成オブジェクトの作成( 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 }