AsyncOpen
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
@MainActor
@propertyWrapper
public struct AsyncOpen : DynamicProperty
一种属性包装器类型,用于为当前用户启动异步打开 Realm 的Realm.asyncOpen()
,并通知给定进程的状态
在用户已经登录后或用户将要登录时,将 AsyncOpen 添加到SwiftUI/View
或SwiftUI/App
@AsyncOpen(appId: "app_id", partitionValue: <partition_value>) var asyncOpen
这将立即启动Realm.asyncOpen()
操作,该操作将执行使 Realm 进入可用状态所需的所有工作。 (请参阅 Realm.asyncOpen() 文档)
此属性包装器将发布当前Realm.asyncOpen()
进程的状态,如进度、错误和打开的域,这些状态可用于更新视图
struct AsyncOpenView: View {
@AsyncOpen(appId: "app_id", partitionValue: <partition_value>) var asyncOpen
var body: some View {
switch asyncOpen {
case .notOpen:
ProgressView()
case .open(let realm):
ListView()
.environment(\.realm, realm)
case .error(_):
ErrorView()
case .progress(let progress):
ProgressView(progress)
}
}
}
这个打开的realm
稍后可以作为环境值注入到视图中,我们的属性包装器将使用该值将打开的域中的数据填充到视图中
ListView()
.environment(\.realm, realm)
-
每次 asyncOpen 状态更改时,
AsyncOpenState
的发布者都会发出一个状态。声明
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
,则不设置连接超时。 -
为 Flexible Sync 配置初始化属性包装器。
声明
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()