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()
-
プロパティ ラッパーを初期化
宣言
パラメーター
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()