所以我在swift 2中尝试了错误处理的事情.但是我不确定的一件事是如何让它适用于异步回调函数.假设我从后端加载资源.我定义了我的错误类型,如下所示:
enum NetworkError: ErrorType {
case NoConnection
case InvalidJSON
case NoSuccessCode(code: Int)
}
Run Code Online (Sandbox Code Playgroud)
我打算在出现问题时抛出其中一个案例.这是进行网络呼叫的功能:
func loadRequest<T: Decodable>(request: NSURLRequest, callback:T -> Void) throws {
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) { data, response, error in
// Other code that parses json and at somewhere it throws
throw NetworkError.NoConnection
}
}
Run Code Online (Sandbox Code Playgroud)
但这里编译器给出错误:
无法
dataTaskWithRequest使用类型的参数列表 调用(NSURLRequest, (_,_,_) throws) -> Void)
从这里可以看出,相同的闭包类型在声明时被视为不同的类型throws.
那么这种尝试捕获的东西在这些情况下是如何工作的呢?
| 归档时间: |
|
| 查看次数: |
1464 次 |
| 最近记录: |