ErrorDispatching 0.2.1

ErrorDispatching 0.2.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2018年1月
SwiftSwift 版本4.0
SPM支持 SPM

Anatoliy RadchenkoSergey Korolkov 维护。



  • Anatoliy Radchenko





这是什么?

一个小型库,通过使用责任链模式简化您的视图控制器/视图模型中的错误处理代码。它还允许您重用错误处理代码,如果需要在其他项目中实现相同的行为。

它如何工作?

这里的主要事物之一是所谓的“提议者”。每个提议者通常接受一种特定类型的错误作为输入,并提议处理该错误的方法 - 例如,"显示系统警报",或者将此错误向下传递。执行此方法(例如,显示系统警报)完全取决于您。

处理您自己的自定义错误很简单 - 创建一个实现MethodProposing协议的类,并为您的错误返回正确的“提议”

enum MyCustomError: Swift.Error {
    case somethingBadHappened
}

class MyProposer: MethodProposing {
    func proposeMethod(toHandle error: Error) -> Proposition? {
        guard let myCustomError = error as? MyCustomError else {
            return nil
        }
        
        let config = SystemAlertConfiguration(
            title: "Error",
            message: "Oops! Something went wrong",
            actionTitle: "OK"
        )
        
        return .single(.systemAlert(config))
    }
}

然后您可以将此提议者传递给ErrorDispatcher初始化器,以及您需要的任何其他提议者

let compoundProposer = CompoundMethodProposer(proposers: [
    MyProposer(),
    NSURLErrorMethodProposer()
])
let dispatcher: ErrorDispatcher = ErrorDispatcher(proposer: compoundProposer)

要执行提议的方法,您应该实现MethodExecutor协议。这是一个回调,当分发者找到处理错误的方法时将被调用。例子

extension ExampleViewController: MethodExecutor {
    func execute(method: ErrorHandlingMethod) {
        switch method {
        case .systemAlert(let config):
            showSystemAlert(with: config)
        default:
            return
        }
    }
}

之后,您可以使用ErrorDispatcher按以下方式处理您的错误

dispatcher.executor = self

let nsError = NSError(domain: NSURLErrorDomain, code: NSURLErrorCannotFindHost, userInfo: nil)
dispatcher.handle(error: nsError)

例子

只需启动 Example/ErrorDispatching.xcworkspace,构建并运行。CocoaPods已经安装。

安装

ErrorDispatching通过CocoaPods可获取。要安装它,只需将以下行添加到您的Podfile中
修订版

pod "ErrorDispatching"

Swift版本

Pod版本 待办事项
3.0 0.1.3+
4.0 0.2.0+

添加更多内置提议者以处理系统错误

  • 还提供更多本地化
  • 作者

Anatoliy Radchenko,[email protected]

ErrorDispatching在MIT许可下可用。有关更多信息,请参阅LICENSE文件。

许可

CocoaPods是以下项目的项目