構成
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: ) 新しい
Realm
インスタンスの作成に使用できるConfiguration
を作成します。注意
fileURL
、inMemoryIdentifier
、syncConfiguration
パラメーターは相互に排他的です。 デフォルトのファイル URL を使用する場合は、これらの 1 つだけを設定するか、ないでください。宣言
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 を識別するために使用される string 。
syncConfiguration
MongoDB Realm との同期を目的とした 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 に永続化されていました。
-
MongoDB Realm と同期するために Realm を構成するために使用される構成値。
inMemoryIdentifier
と排他関係にあります。宣言
Swift
public var syncConfiguration: SyncConfiguration? { get set }
-
Realm ファイルのローカル URL。
inMemoryIdentifier
と排他関係にあります。宣言
Swift
public var fileURL: URL? { get set }
-
特定のメモリ内 Realm を識別するために使用される string 。 Mutually exclusive with
fileURL
andsyncConfiguration
.宣言
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
public var migrationBlock: MigrationBlock?
-
移行が必要な場合に、提供されたスキーマを使用して Realm ファイルを再作成するかどうか。 これは、保存されたスキーマが提供されたスキーマと異なる場合、または保存されたスキーマのバージョンがこの構成のバージョンと異なる場合に当てはまります。 このプロパティを
true
に設定すると、移行が必要または実行される場合、ファイルが削除されます。注意
このプロパティをtrue
に設定しても、ファイル形式の移行は無効になりません。宣言
Swift
public var deleteRealmIfMigrationNeeded: Bool { get set }
-
プロセスの有効期間中に初めて Realm を開き、ユーザーに返される前に圧縮する必要があるかどうかを判断するために呼び出されるブロック。 合計ファイルサイズ(データ + 空き領域)とファイル内のデータによって使用される合計バイト数が渡されます。
ファイルを圧縮する試行を行う必要があることを示すには、
true
を返します。 圧縮は、別のプロセスがアクセスしている場合はスキップされます。宣言
Swift
public var shouldCompactOnLaunch: ((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?
-
人間が判読可能な構成値の説明。
宣言
Swift
public var description: String { get }