使用 PromiseKit 处理错误
Error handling with PromiseKit
我有以下枚举:
enum RequestResult: ErrorType {
case TimedOut
case ConnectionFailed
}
在我的视图控制器中,我有以下代码:
when(promise1, promise2).then { results -> Void in
//work with results
}.error { error in
if let err = error as? RequestResult {
switch err {
case .TimedOut: print("Timed Out")
case .ConnectionFailed: print("Connection Failed")
}
}
但错误不会展开到 RequestResult 中。
在我的调试器中,我看到了这个:
我不明白什么是 "When" 以及如何获得它。错误没有成员"When"。此错误的打印结果如下:
When(2, RTB.RequestResult.TimedOut)
我是这样想出来的:
err in
guard let promiseError = err as? PromiseKit.Error else {return}
switch promiseError {
case .When(_, let error):
switch error {
case RequestResult.TimedOut:
print("Timed Out")
case RequestResult.ConnectionFailed:
print("Connection Failed")
default: break
}
default: break
}
我有以下枚举:
enum RequestResult: ErrorType {
case TimedOut
case ConnectionFailed
}
在我的视图控制器中,我有以下代码:
when(promise1, promise2).then { results -> Void in
//work with results
}.error { error in
if let err = error as? RequestResult {
switch err {
case .TimedOut: print("Timed Out")
case .ConnectionFailed: print("Connection Failed")
}
}
但错误不会展开到 RequestResult 中。 在我的调试器中,我看到了这个:
我不明白什么是 "When" 以及如何获得它。错误没有成员"When"。此错误的打印结果如下:
When(2, RTB.RequestResult.TimedOut)
我是这样想出来的:
err in
guard let promiseError = err as? PromiseKit.Error else {return}
switch promiseError {
case .When(_, let error):
switch error {
case RequestResult.TimedOut:
print("Timed Out")
case RequestResult.ConnectionFailed:
print("Connection Failed")
default: break
}
default: break
}