无法将“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&lt;String&gt;' to expected argument type 'DataResponse&lt;Any&gt;'

当我尝试在这里解析我的回复时

  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

无法将 .json 文件从 CSV 下载到 JSON 转换并且无法将 JSON 转换为 CSV

无法将 ReactiveUI 添加到 NUnit 测试项目

“无法将图像数据写入路径” - Laravel 图像干预