AutoOpen

@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
@MainActor
@propertyWrapper
public struct AutoOpen : DynamicProperty

AutoOpen は、Realm を非同期に開くために 1 回試行しますが、インターネット接続がない場合は、ビュー内で使用できる appId と partitionValue の開かれた Realm が返されます。 ユーザーがすでにログインしている後、またはユーザーがログインする場合は、 SwiftUI/ViewまたはSwiftUI/Appに AutoOpen を追加します

@AutoOpen(appId: "app_id", partitionValue: <partition_value>, timeout: 4000) var autoOpen

これにより、 Realm.asyncOpen()操作がすぐに開始され、Realm を使用可能な状態にするために必要なすべての作業が実行されます。 ( Realm.asyncOpen() のドキュメントを参照してください)

このプロパティ ラッパーは、進行状況、エラー、開かれたRealmなど、現在のRealm.asyncOpen()プロセスの状態を公開します。これはビューの更新に使用できます

struct AutoOpenView: View {
    @AutoOpen(appId: "app_id", partitionValue: <partition_value>) var autoOpen

    var body: some View {
       switch autoOpen {
       case .notOpen:
           ProgressView()
       case .open(let realm):
           ListView()
              .environment(\.realm, realm)
       case .error(_):
           ErrorView()
       case .progress(let progress):
           ProgressView(progress)
       }
    }
}

この開かれたrealmは、後で環境値としてビューに入力され、プロパティ ラッパーによって使用され、開かれた Realm のデータをビューに入力します。

ListView()
   .environment(\.realm, realm)

このプロパティ ラッパーはAsyncOpenと同様に動作し、宣言と使用の点では完全に同じですが、オフラインからのアプローチの違いがあります。

  • AsyncOpenStateの パブリッシャー は、 asyncOpen 状態が変化するたびに 状態を発行します。

    宣言

    Swift

    @MainActor
    public var projectedValue: Published<AsyncOpenState>.Publisher { get }
  • これにより、プロパティ ラッパーの状態からの通知がキャンセルされます

    宣言

    Swift

    @MainActor
    public func cancel()
  • プロパティ ラッパーを初期化

    宣言

    Swift

    @MainActor
    public init<Partition>(appId: String? = nil,
                           partitionValue: Partition,
                           configuration: Realm.Configuration? = nil,
                           timeout: UInt? = nil) where Partition: BSON

    パラメーター

    appId

    Realm アプリの一意の識別子が空またはnilの場合、最新の単数形のキャッシュ アプリの検索が試行されます。

    partitionValue

    Realm が分割されるBSON値。

    configuration

    Realm の作成時に使用されるRealm.Configurationは、特定のパーティション値のユーザーの同期構成がsyncConfigurationとして設定され、空の場合はユーザー構成が使用されます。

    timeout

    空の場合、またはnil接続タイムアウトが設定されていない場合に、接続を完全に確立できるようにする最大秒数。

  • 柔軟な同期構成の プロパティ ラッパーを初期化します。

    宣言

    Swift

    @MainActor
    public init(appId: String? = nil,
                configuration: Realm.Configuration? = nil,
                timeout: UInt? = nil)

    パラメーター

    appId

    Realm アプリの一意の識別子が空またはnilの場合、最新の単数形のキャッシュ アプリの検索が試行されます。

    configuration

    Realm の作成時に使用されるRealm.Configurationは、特定のパーティション値のユーザーの同期構成がsyncConfigurationとして設定され、空の場合はユーザー構成が使用されます。

    timeout

    、接続が完全に確立されるまでの最大時間(ミリ秒)。 空の場合、またはnilの場合は接続タイムアウトが設定されていません。

  • 宣言

    Swift

    nonisolated public func update()