AsyncOpen

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

Realm을 비동기적으로 열고 지정된 프로세스의 상태를 알리는 현재 사용자에 대해 Realm.asyncOpen() 을(를) 시작하는 속성 래퍼 유형입니다.

사용자가 이미 로그인한 후 또는 사용자가 로그인하려는 경우 SwiftUI/View 또는 SwiftUI/App 에 AsyncOpen을 추가합니다.

@AsyncOpen(appId: "app_id", partitionValue: <partition_value>) var asyncOpen

이렇게 하면 Realm을 사용 가능한 상태로 만드는 데 필요한 모든 작업을 수행하는 Realm.asyncOpen() 작업이 즉시 시작됩니다. (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 는 나중에 속성 래퍼에서 열린 Realm의 데이터로 뷰를 채우는 데 사용할 환경 값으로 뷰에 삽입할 수 있습니다.

ListView()
   .environment(\.realm, realm)
  • AsyncOpenState 의 출판사는 asyncOpen 상태가 변경될 때마다 상태를 내보냅니다.

    선언

    Swift

    public var projectedValue: Published<AsyncOpenState>.Publisher { get }
  • 이렇게 하면 속성 래퍼 상태의 모든 알림이 취소됩니다.

    선언

    Swift

    public func cancel()
  • 속성 래퍼 초기화

    선언

    Swift

    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 연결 시간 제한이 설정되지 않은 경우

  • Flexible Sync 구성을 위해 속성 래퍼를 초기화합니다.

    선언

    Swift

    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()