構成

@frozen
public struct Configuration : Sendable
extension Realm.Configuration: CustomStringConvertible
extension Realm.Configuration: Equatable

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

Configuration インスタンスは単純な Swift 構造体です。 RealmObjectとは異なり、ミューテーションがない限り、スレッド間で自由に共有できます。

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

デフォルト構成

  • 構成が明示的に指定されていない場合に Realm を作成するために使用されるデフォルトのConfigurationRealm()

    宣言

    Swift

    public static var defaultConfiguration: Configuration { get set }

初期化

  • 新しいRealmインスタンスの作成に使用できるConfigurationを作成します。

    注意

    fileURLinMemoryIdentifierのパラメーターは相互に排他的です。 デフォルトのファイル 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?

CustomStringConvertable

等価