Alamofire出现Codables错误“无法将类型'[[String:Any]''的值转换为预期的参数类型'数据'”

时间:2019-11-01 05:40:54

标签: ios json swift alamofire codable

我通过使用Alamofire从API获得了响应,该响应为[String:Any]的形式,我正尝试将该响应转换为可编码格式,并显示错误“无法转换类型'[String:Any ]”作为预期参数类型“数据”。

请找到我的以下代码并为我提供帮助。

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
                    }
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

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)
        }
    }
}