ios - 无法在 WebService 调用请求中使用 NSData 强制转换 NSDicationry
问题描述
试图包装来自 WebService 的 Codable 响应数据使用 cocoa pod pod 'WebService', '~> 0.4'
var webServiceObject : WebService = WebService()
webServiceObject.sendRequest(URLString, parameters: parameters as NSDictionary?, requestType: .post, success: {response,data in
do{
// Handle data when request Success
let jsonDecoder = JSONDecoder()
do {
let result = try jsonDecoder.decode([ResponseModelValue].self, from: data as! Data)
print(response?.statusCode as Any)
print("Success Response Value", result)
}
} catch {
print(error)
}
}, failed: {
(response : HTTPURLResponse?, ResponseDict : Any?) in
print(response?.statusCode as Any)
print("Failed Response Dictionary", ResponseDict!)
// Handle data when request fails
}, encoded: false )
我收到以下错误
无法将“__NSDictionaryI”(0x10c81ab38)类型的值转换为“NSData”(0x10c819620)。
谁能建议我在这里做错了什么,所以我可以用可编码的方式解析正确的响应数据[ResponseModelValue]
解决方案
查看该库后,如果可能的话,它似乎会将响应转换为字典并回退到返回数据。 https://github.com/kansaraprateek/WebService/blob/master/WebService/Classes/WebService.swift#L281
似乎没有办法配置该行为。该库也是在创建之前Codable
创建的。您可能需要联系库所有者进行修复,派生 repo 并自行修复,或者切换到使用 URLSession,因为您发布的代码与 URLSession 调用基本相同。
推荐阅读
- opencv - 读取 OpenCV FOURCC 代码 int 到 char 转换
- javascript - 在移动浏览器中使用 go 键跳过 HTML“日期”输入
- python - 在 Python 中对 2 个数组进行 t 测试时获取数组而不是数字
- function - 参数类型“Function”不能分配给参数类型“void Function(bool?)?”。空对象
- javascript - JavaScript 中模块的执行上下文是什么?如何在浏览器的控制台中显式访问它?
- python - 通过 SQL Server 代理作业在 Conda 中使用 Numpy 运行 python 脚本
- sql - 来自 SQL 源的 BIT 列由数据收集器转换为布尔值
- css - Material-UI Grid - 自动堆叠项目以占用最小垂直空间
- pandas - Pandas - 在不复制数据的情况下计算行数
- css - 2021 年 CSS 动画最佳实践是什么,以确保与所有浏览器兼容?