자동 열기
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
@MainActor
@propertyWrapper
public struct AutoOpen : DynamicProperty
AutoOpen
은(는) 비동기적으로 Realm을 열려고 시도하지만 인터넷에 연결되어 있지 않은 경우 지정된 appId 및 partitionValue에 대해 열린 Realm을 반환하며 뷰 내에서 사용할 수 있습니다. 사용자가 이미 로그인한 후 또는 사용자가 로그인하려는 경우 SwiftUI/View
또는 SwiftUI/App
에 자동 열기를 추가합니다.
@AutoOpen(appId: "app_id", partitionValue: <partition_value>, timeout: 4000) var autoOpen
이렇게 하면 Realm을 사용 가능한 상태로 만드는 데 필요한 모든 작업을 수행하는 Realm.asyncOpen()
작업이 즉시 시작됩니다. (Realm.asyncOpen() 문서 참조)
이 속성 래퍼는 진행률, 오류, 열린 영역과 같은 현재 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
연결 시간 제한이 설정되지 않은 경우 연결이 완전히 설정될 때까지 허용되는 최대 시간(밀리초)입니다. -
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()