2016-04-21 33 views
1

處理我有以下枚舉:誤差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。 在我的調試器,我看到這一點:

enter image description here

我不明白什麼是「當」,以及如何我能得到這個。錯誤沒有成員「何時」。打印出此錯誤的是以下幾點:

When(2, RTB.RequestResult.TimedOut) 
+0

調試器有時會顯示不反映什麼是真正有「搞笑」的價值觀。如有疑問,請依靠打印輸出到控制檯或LLDB中的'po '命令。 – courteouselk

+0

您是否定義了'RequestResult'枚舉? –

回答

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 
}