ios - 在 swift 3 中生成你自己的错误代码

标签 ios swift3 nsurlsession

我想要实现的是在 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 Bhandarianswer关于如何创建自定义错误类型

关于ios - 在 swift 3 中生成你自己的错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40671991/

相关文章:

ios - 如何修复segue后新 View 的显示?

ios - 从自定义类管理 NSURLSession 的完成处理程序

ios - Open GL ES,多个着色器

ios - 自定义 iPhone 相机控件(不使用 UIImagePickerController)

ios - 根据最高的 subview 按钮自动调整 super View 的高度

ios - 具有多个数据的 Swift 搜索栏

ios - CGContext绘制两个相邻的菱形产生了很细的间隙,如何减少它?

ios - UIButton .setImage() 在 Swift 3 中不起作用

ios - AFNetworking 3.0 AFHTTPSessionManager 使用 NSOperation

objective-c - 创建 AVAssetDownloadURLSession 需要 com.apple.developer.media-asset-download 权利