测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可 | MIT |
发布最后发布 | 2018年1月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Anatoliy Radchenko,Sergey Korolkov 维护。
一个小型库,通过使用责任链
模式简化您的视图控制器/视图模型中的错误处理代码。它还允许您重用错误处理代码,如果需要在其他项目中实现相同的行为。
这里的主要事物之一是所谓的“提议者”。每个提议者通常接受一种特定类型的错误作为输入,并提议处理该错误的方法 - 例如,"显示系统警报",或者将此错误向下传递。执行此方法(例如,显示系统警报)完全取决于您。
处理您自己的自定义错误很简单 - 创建一个实现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"
Pod版本 | 待办事项 |
---|---|
3.0 | 0.1.3+ |
4.0 | 0.2.0+ |
ErrorDispatching在MIT许可下可用。有关更多信息,请参阅LICENSE文件。
CocoaPods是以下项目的项目