错误处理器

对 SwiftUI 的 alert(isPresent:error:actions:) 修饰符的一个非常小的重新封装。

此库没有足够多语言的本地化字符串,欢迎 fork 并提交 PR!

设置

要在您的 SwiftUI 应用中使用错误处理器,需要几个步骤来初始化它。在我们开始之前,不要忘记 import ErrorHandler

1. 设置环境。

前往 <您的项目名称>App.swift,在您的 app 的大括号内添加 @Environment(\.errorHandler) private var handler

@main
struct SampleApp: App {
    @Environment(\.errorHandler) private var handler
  
    // body: some Scene { ...
}

2. 设置 alert

然后,将 errorAlert(handler:) 修饰符添加到您的 ContentView

@main
struct SampleApp: App {
    @Environment(\.errorHandler) private var handler
  
    var body: some Scene {
        WindowGroup {
            ContentView()
                .errorAlert(handler: handler)
        }
    }
}

3. 使用它!

一旦您设置了错误处理器,您就可以在任何地方使用它。这是一个示例

// You have you get handler from environment first.
//
// use 
// @Environment(\.errorHandler) private var handler
// to get it

withErrorHandler(handler) {
    // do something may occur error
}

深入了解

此库提供了两种主要的错误处理方法。

  1. 最简单的一种,直接处理错误

    withErrorHandler(handler) {
        // actions may occur error
    }
  2. 您还可以在用户点击“确认”按钮后执行自定义操作。

withErrorHandler(handler) {
    // actions may occur error
} handlerAction: {
    // actions that will execute after user click "confirm" button
}

该库还提供异步版本的函数来支持并发,它们都用 @MainActor 标记。这些函数支持需要在异步环境中运行的 throw-actions。

await withErrorHandler(handler) {
    // actions may occur error in asynchronous environment.
}

await withErrorHandler(handler) {
    // actions may occur error in asynchronous environment.
} handlerAction: {
    // actions that will execute after user click "confirm" button
    // handler action DOSE NOT SUPPORT concurrency
}