我通过使用 Alamofire 从 API 获得了响应,该响应采用 [String:Any] 的形式,我正在尝试将该响应转换为可编码格式,它显示错误“无法转换类型 '[String: Any] 的值]' 到预期的参数类型 'Data'。
请找到我的以下代码并帮助我。
func apiHandling(){
Alamofire.request(catrgeryurl, method: .get, parameters: nil, headers: nil).responseJSON { (response) in
if response.result.value != nil{
if let data = response.result.value as? [String:Any]{
if let myStruct = try? JSONDecoder().decode(Mainsite.self, from: data) {
//do something with myStruct
print(myStruct)
} else {
//handle myStruct being nil
}
}
}
}
}
最佳答案
JSONDecoder
需要 Data
而不是字典。这就是错误告诉您的内容。
将 responseJSON
替换为 responseData
,这是处理响应的推荐语法。
func apiHandling(){
Alamofire.request(catrgeryurl).responseData { response in
switch response.result {
case .success(let data):
do {
let myStruct = try JSONDecoder().decode(Mainsite.self, from: data)
} catch { print(error) }
case .failure(let error): print(error)
}
}
}
关于ios - Codables 错误与 Alamofire "Cannot convert value of type ' [字符串 : Any ]' to expected argument type ' Data'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58654587/