无法将“DataResponse<String>”类型的值转换为预期的参数类型“DataResponse<Any>”
Posted
技术标签:
【中文标题】无法将“DataResponse<String>”类型的值转换为预期的参数类型“DataResponse<Any>”【英文标题】:Cannot convert value of type 'DataResponse<String>' to expected argument type 'DataResponse<Any>' 【发布时间】:2020-02-26 06:34:21 【问题描述】:这是我的代码
Alamofire.request(model.mainURL, method: model.requestMethod, parameters: model.bodyData, encoding: model.encoding, headers: model.headers).responseString (response) in
parser.decodeRequest(response: response, completionHandler: (decodeResponse, error) in
SVProgressHUD.dismiss()
self.completionBlock?(decodeResponse, error)
)
我有这样的错误
Cannot convert value of type 'DataResponse<String>' to expected argument type 'DataResponse<Any>'
当我尝试在这里解析我的回复时
parser.decodeRequest(response: response, completionHandler: (decodeResponse, error) in
SVProgressHUD.dismiss()
我知道如果在 responseJSON 上更改 responseString 错误将得到修复,但我确实需要 responseString 并且不知道如何使用 completionHandler 为解析器制作它
【问题讨论】:
解析器的邮政编码 它会报错,因为它是一个字符串类型。尝试将响应从字符串类型转换为 Any 我的回答有用吗?我发现你不能使用responseJSON
的事实很奇怪。响应根本不是 JSON 吗?
【参考方案1】:
您可以在DataResponse
上使用map
方法:
Alamofire.request(model.mainURL, method: model.requestMethod, parameters: model.bodyData, encoding: model.encoding, headers: model.headers).responseString (response) in
parser.decodeRequest(response: response.map $0 as Any , completionHandler: (decodeResponse, error) in
SVProgressHUD.dismiss()
self.completionBlock?(decodeResponse, error)
)
【讨论】:
以上是关于无法将“DataResponse<String>”类型的值转换为预期的参数类型“DataResponse<Any>”的主要内容,如果未能解决你的问题,请参考以下文章
无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端
C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS