我有一个协议可以像这样处理我的请求:
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给我的错误?