構成
Configuration
インスタンスでは、Realm のインスタンスを作成するために使用されるさまざまなオプションについて説明します。
Configuration
インスタンスは単純な Swift 構造体です。 Realm
やObject
とは異なり、ミューテーションがない限り、スレッド間で自由に共有できます。
クラス サブセットの構成値の作成( objectClasses
プロパティの設定)にはコストがかかる場合があります。 このため、Realm を開くたびに新しい値を作成するのではなく、通常、個別の構成ごとに 1 つの構成値をキャッシュして再利用することをお勧めします。
-
構成が明示的に指定されていない場合に Realm を作成するために使用されるデフォルトの
Configuration
(Realm()
)宣言
Swift
public static var defaultConfiguration: Configuration { get set }
-
init(fileURL:
inMemoryIdentifier: syncConfiguration: encryptionKey: readOnly: schemaVersion: migrationBlock: deleteRealmIfMigrationNeeded: shouldCompactOnLaunch: objectTypes: seedFilePath: ) 新しい
Realm
インスタンスの作成に使用できるConfiguration
を作成します。注意
fileURL
とinMemoryIdentifier
のパラメーターは相互に排他的です。 デフォルトのファイル URL を使用する場合は、これらの 1 つだけを設定するか、ないでください。 同期された Realm では、 がメモリ内 Realm でない限り、一意のファイル パスが設定されます。宣言
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 を識別するために使用される string 。
syncConfiguration
Atlas App Services との同期を目的とした Realm の場合、同期構成。
encryptionKey
データの暗号化に使用する任意の 64 バイトのキー。
readOnly
Realm が読み取り専用かどうか(読み取り専用ファイルの場合は true である必要があります)。
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 に永続化されていました。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 を識別するために使用される string 。
fileURL
と排他関係にあります。宣言
Swift
public var inMemoryIdentifier: String? { get set }
-
データの暗号化に使用する 64 バイトのキー、または暗号化が有効になっていない場合は
nil
。宣言
Swift
public var encryptionKey: Data?
-
Realm を読み取り専用モードで開くかどうか。
同期されていない Realm の場合、書込み可能ではない、または書込み不可のディレクトリにある Realm ファイルを開くには、これが必要です。 これは、開いている間は誰にも変更されないファイルにのみ使用し、別のスレッドまたはプロセスによって書き込まれる可能性のあるファイルの読み取り専用ビューを取得するだけではありません。 読み取り専用モードで を起動するには、Realm のリーダーとライターの調整を無効にする必要があるため、別のプロセスから書込みトランザクションをコミットするとクラッシュが発生します。
同期された Realm は常に書込み可能である必要があり(同期が発生しないため)、これは代わりに Realm で書込みトランザクションの実行を禁止するだけです。 さらに、Realm のスキーマを初期化するためなど、Realm に行われた一部の自動書込みをスキップします。
readOnly = YES
を設定することは、同期ユーザーが書込み (write) アクセス権を持たない Realm には厳密に必要ではありませんが、エラー レポート作成が改善され、一部のエラーを早期に検出できるため、強く推奨されます。クエリベースの同期を使用する 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 によって管理されるクラス。
宣言
Swift
public var objectTypes: [ObjectBase.Type]? { get set }
-
書込みトランザクション (write transaction) を開始しようとする際に例外がスローされる前に、Realm ファイル内のライブ バージョンの最大数。
Realm は MVCC スナップショットの分離を提供します。つまり、1 つのスレッドでの書込み (write) が別のスレッドで読み取られるデータを上書きせず、代わりにそのデータの新しいコピーが書込まれます。 Realm が更新を行うと、最新バージョンのデータに更新され、古いバージョンが解放され、後続の書込みトランザクション (write transaction) によって上書きできるようになります。
通常の状況では、これは問題ではありませんが、アクティブなバージョンの数が大きくなりすぎると、ディスク上のファイルサイズに悪影響が生じます。 これは、多数の異なるスレッドに対して一度に書込みを実行する場合、固定されたオブジェクトを長時間保持する場合、または Realm の更新を許可していないバックグラウンド スレッドで長時間の操作を実行する場合に発生する可能性があります。
このプロパティをゼロ以外の値に設定すると、設定されたバージョン数を超えると、代わりに例外がスローされます。 これは、開発中に低い値で使用すると、問題が発生しうる場所を識別したり、本番環境の使用では、開くことができないほど大きな 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?
-
人間が判読可能な構成値の説明。
宣言
Swift
public var description: String { get }