【发布时间】:2017-04-02 00:06:02
【问题描述】:
我想要实现的是在 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”方式吗?
【问题讨论】:
-
尝试在声明中使用
NSError而不是Error(var errorTemp = NSError(...)) -
这解决了问题,但我认为 swift 3 不想继续使用 NS?
-
在 iOS 开发中确实如此。对于纯 Swift 开发,您应该通过遵循
Error协议来创建自己的错误实例 -
@LucaD'Alberti 好吧,您的解决方案确实解决了问题,请随时将其添加为答案,以便我接受!
标签: ios swift3 nsurlsession