我想要实现的是在 swift 3 中执行 URLSession
请求。我在一个单独的函数中执行此操作(以免分别为 GET 和 POST 编写代码)并返回URLSessionDataTask
并在闭包中处理成功和失败。有点像这样-
let task = URLSession.shared.dataTask(with: request) { (data, uRLResponse, responseError) in
DispatchQueue.main.async {
var httpResponse = uRLResponse as! HTTPURLResponse
if responseError != nil && httpResponse.statusCode == 200{
successHandler(data!)
}else{
if(responseError == nil){
//Trying to achieve something like below 2 lines
//Following line throws an error soo its not possible
//var errorTemp = Error(domain:"", code:httpResponse.statusCode, userInfo:nil)
//failureHandler(errorTemp)
}else{
failureHandler(responseError!)
}
}
}
}
我不希望处理此函数中的错误情况,而是希望使用响应代码生成错误并返回此错误以在调用此函数的任何地方处理它。 谁能告诉我该怎么做?还是这不是处理此类情况的“Swift”方式?
最佳答案
在您的情况下,错误是您试图生成一个 Error
实例。 Swift 3 中的 Error
是一种可用于定义自定义错误的协议(protocol)。此功能特别适用于在不同操作系统上运行的纯 Swift 应用程序。
在 iOS 开发中,NSError
类仍然可用,它符合 Error
协议(protocol)。
因此,如果您的目的只是传播此错误代码,您可以轻松替换
var errorTemp = Error(domain:"", code:httpResponse.statusCode, userInfo:nil)
与
var errorTemp = NSError(domain:"", code:httpResponse.statusCode, userInfo:nil)
否则检查 Sandeep Bhandari 的 answer关于如何创建自定义错误类型
关于ios - 在 swift 3 中生成你自己的错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40671991/