无法将“DataResponse<Any>”类型的值转换为预期的参数类型“Data”
Posted
技术标签:
【中文标题】无法将“DataResponse<Any>”类型的值转换为预期的参数类型“Data”【英文标题】:Cannot convert value of type 'DataResponse<Any>' to expected argument type 'Data' 【发布时间】:2019-07-08 14:59:46 【问题描述】:我正在向一个网站发出一个简单的 post 请求,该网站发回如下所示的 JSON:
Account = "blah blah";
Password = "blah blah";
这是请求。
@IBAction func submitButtonClicked(_ sender: Any)
AF.request("https://companywebsite.com", method: .post, parameters: parameters, encoding:JSONEncoding.default)
.responseJSON response in
let json = try? JSON(data: response)
我收到以下编译错误:
Cannot convert value of type 'DataResponse<Any>' to expected argument type 'Data'
我使用 Alamofire 发送请求并使用 SwiftyJSON 解析它。我以前从未使用过 Swift 或任何一个库,所以我真的很想知道我需要做些什么来解决这个问题。
我想提取帐户和密码以存储在单独的变量中。我尝试按照其他教程进行操作,但没有成功。如果有人可以帮助我,我将不胜感激。
【问题讨论】:
【参考方案1】:您需要responseData
而不是responseJSON
AF.request("https://companywebsite.com", method: .post, parameters: parameters, encoding:JSONEncoding.default)
.responseData response in
guard let data = response.data else return
let json = try? JSON(data:data)
if let acc = json?["Account"].string
print(acc)
if let pass = json?["Password"].string
print(pass)
其他变体
Alamofire.request("https://companywebsite.com", method: .post, parameters: [:], encoding:JSONEncoding.default)
.responseJSON response in
let json = try? JSON(response.result.value!)
【讨论】:
感谢@Sh_Khan,我现在如何使用 SwiftyJson 从“json”中提取帐户和密码? 你能发布预期的响应json结构吗 我的问题中的第一段代码正是 JSON 的样子,只是长随机字符串而不是“blah blah”以上是关于无法将“DataResponse<Any>”类型的值转换为预期的参数类型“Data”的主要内容,如果未能解决你的问题,请参考以下文章
无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端
C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS