Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

SwiftUI로 동기화 오류 처리 - Swift SDK

이 페이지의 내용

  • 동기화 오류 처리

Realm Mobile Sync를 사용하는 애플리케이션을 개발하는 동안 오류 핸들러를 설정해야 합니다. 이 오류 핸들러는 실패한 동기화 관련 API 호출을 감지하고 응답합니다.

다음도 참조하세요.

동기화 오류 핸들러 구현 이 작동하는 전체 예시 앱 을 보려면 템플릿 앱 을 만들고 SwiftUI 클라이언트 를 확인하세요. 오류 핸들러 구현 은 App.swift 파일 에 있습니다.

동기화 오류 핸들러를 SwiftUI에 친화적으로 구현하려면 선택적 @Published 변수를 사용하여 ObservableObject 을 생성하여 잠재적 오류를 포함합니다. 이 핸들러는 SyncManager 를 사용하여 오류를 수신합니다. SyncManager 은(는) SyncError 유형의 오류를 보고하며, 다른 연결 문제도 보고합니다.

자세한 내용은 기본 Objective-C RLMSyncError를 참조하세요.

final class ErrorHandler: ObservableObject {
@Published var error: Swift.Error?
init(app: RealmSwift.App) {
// Sync Manager listens for sync errors.
app.syncManager.errorHandler = { error, syncSession in
if let error = error as? SyncError {
/* Handle specific SyncError cases, or use a switch
* statement to handle all Sync error codes.
* In this case, ignore a .connectionFailed error and
* continue executing the app code. */
if error.code == .connectionFailed {
return
}
self.error = error
} else if let error = error as? POSIXError {
/* The error handler may also report NSError types to
* allow for error handling in a platform-idiomatic way.
* In this case, handle a connection timeout error as
* an .ETIMEDOUT error in the POSIXError domain. */
if error.code == .ETIMEDOUT {
return
}
self.error = error
}
}
}
}

일반적인 Device Sync 오류 목록과 이를 처리하는 Device Sync 방법은 Atlas App Services 문서에서 동기화 오류 를 참조하세요.

오류 핸들러를 @StateObject 으)로 초기화합니다. 뷰 계층 구조에 환경 객체 로 삽입합니다. 이 예시 에서는 동기화 오류가 발생하면 사용자에게 .alert 를 표시합니다.

let app = App(id: flexibleSyncAppId)
@main
struct realmSwiftUIApp: SwiftUI.App {
// Initialize the error handler
@StateObject var errorHandler = ErrorHandler(app: app)
var body: some Scene {
WindowGroup {
NextView(app: app)
// Inject the error handler as an environment object
.environmentObject(errorHandler)
// Display an alert to the user containing the error when a Sync error occurs
.alert(Text("Error"), isPresented: .constant(errorHandler.error != nil)) {
Button("OK", role: .cancel) { errorHandler.error = nil }
} message: {
Text(errorHandler.error?.localizedDescription ?? "")
}
}
}
}

그런 다음 Realm App를 관찰하는 뷰에서 오류 핸들러를 @EnvironmentObject 로 사용하여 React to Sync 오류를 처리할 수 있습니다. 여기서 오류가 발생하면 위의 보기에서 설정하다 .alert 를 사용하여 사용자에게 경고 가 나타납니다.

struct NextView: View {
@ObservedObject var app: RealmSwift.App
// Use the error handler that you injected into the environment
@EnvironmentObject var errorHandler: ErrorHandler
var body: some View {
Text("You might log users in or handle errors in this view")
}
}

돌아가기

데이터 필터링

이 페이지의 내용