Swift3:将失败块从 Swift2 转换为 Swift3 的 AFNetworking 问题

Swift3: AFNetworking Issues converting failure Block from Swift2 to Swift3

我正在将我的 Swift2 代码转换为 Swift3。

Swift2 中的代码

manager.post(url, parameters: dict,
      success: { (operation: AFHTTPRequestOperation?, responseObject: Any?) in
          self.removeActivityIndicator()                    
          
          if let jsonDict = self.parseJSON(responseObject) {
              callback(jsonDict)
          }
      },
      failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
          self.removeActivityIndicator()
          
          print("Error: " + error.localizedDescription)
          var dict = error.userInfo
          dict["error"] = error.localizedDescription
          if let jsonDict = dict as? Dictionary<String, AnyObject> {
              callback(jsonDict)
          }
      }
  )

在失败部分,我收到以下错误消息,

Cannot convert value of type '(AFHTTPRequestOperation!, NSError!) -> ()' to expected argument type '((AFHTTPRequestOperation?, Error?) -> Void)!'

当我将 failure: { (operation: AFHTTPRequestOperation!, error: NSError!) 转换为 failure: { (operation, error)

我在线上遇到错误

var dict = error.userInfo

作为'Value of type Error has no member UserInfo'

。 .按照 Larme 的建议使用 Alamofire 或探索其他服务。 Alamofire 与 AFNetworking 相同并且非常灵活。您将通过代码中的微小更改进行集成。 Swift3,4 对 AFNetworking 的支持不多。