将DataResponse <数据>转换为期望的类型DataResponse <any>?

时间:2018-07-11 08:56:34

标签: swift types alamofire

我有一个协议可以像这样处理我的请求:

protocol NetworkResponseProcessor {
  var completionBlock : NetworkRequestCompletionBlock {get set}

  init(completionBlock : @escaping NetworkRequestCompletionBlock)

  func processResponse(response : DataResponse<Any>?)
  func processError(error : Error?)
}

在我使用Alamofire的一个上传请求中,我想将响应传递给processResponse方法。但是,响应的类型为DataResponse<Data>,现在Xcode告诉我它无法将此类型转换为预期的参数类型DataReponse<Any>?

我的呼叫看起来像这样:

Network.shared.upload(multipartFormData: { (multipartFormData) in
            multipartFormData.append(fileURL, withName: "content")
        },
    usingThreshold: UInt64.init(),
    to: endpoint,
    method: method,
    headers: headers) { (encodingResult) in
      switch encodingResult {
      case .success(let upload, _, _):
          upload.validate().responseData(completionHandler: { (response) in
              self.responseProcessor.processResponse(response: response)
          })
      case .failure(let encodingError):
          print(encodingError)
          self.responseProcessor.processError(error: NetworkRequestError.InvalidJSONData)
      }
}

在此代码中,Network是使用shared作为SessionManager的单例。

如果我使用responseJSON而不是responseData,那么Xcode很高兴,但是由于响应是二进制数据,出于明显的原因,我不能使用该方法。 我应该如何解决Xcode给我的错误?

0 个答案:

没有答案