2016-02-06 46 views
0

我有一个定制的错误类型,用于低级别HTTP问题:如何嵌套低级错误和更高级别的错误?

enum APIClientError: ErrorType { 
    case NetworkError 
    ... 
} 

在更高级别的层我有另一个错误类型:

enum SignInError: ErrorType { 
    case InvalidUser 
    ... 
} 

我的问题是,那些APIClientError实例需要泡到更高层,在我的功能我需要返回可能是APIClientError,也许是SignInError

我该如何声明这样的功能?我试过

typealias LoginResult = Result<SuccessType, ErrorType> 

但是我不工作('使用ErrorType'作为符合协议'ErrorType'的具体类型不被支持')。

如何在Swift中嵌套来自不同图层的错误类型?

回答

0

我也在为此挠头。我能想到的唯一方法就是这样:

enum APIClientError: ErrorType { 
    case NetworkError 
    ... 
} 


enum SignInError: ErrorType { 
    case InvalidUser 
    //note, the name of the case can't be the same as the type of the error due to compiler errors 
    case APIError(APIClientError) 
} 

这样错误会冒出来的。唯一烦人的事情是解决处理错误的代码的多层错误嵌套。