【问题标题】:Error handling with PromiseKit使用 PromiseKit 处理错误
【发布时间】:2016-04-21 07:14:47
【问题描述】:

我有以下枚举:

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(2, RTB.RequestResult.TimedOut)

【问题讨论】:

  • 调试器有时会显示“有趣”的值,这些值并不能反映真实情况。如有疑问,请依靠控制台打印输出或 LLDB 中的po <expression> 命令。
  • 你定义RequestResult枚举了吗?

标签: ios swift promisekit


【解决方案1】:

我是这样想的:

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
}

【讨论】:

    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2011-01-24
    相关资源
    最近更新 更多