ios - Codables 错误与 Alamofire "Cannot convert value of type ' [字符串 : Any ]' to expected argument type ' Data'"

标签 ios json swift alamofire codable

我通过使用 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/

相关文章:

json - 在 swift 4 中解析 JSON 时出错

swift - 如何制作方形视频?

ios - 始终从纵向呈现 View Controller [iOS]

ios - 混合 Swift 和 Objective C : "ProjectName-Swift.h" file not found

ios - 在 JSQMessagesController 中发送消息

java - JsonArray 输出不起作用

macos - 如何快速根据用户输入运行警报

ios - 如何在不需要双方按下同一个按钮的情况下建立游戏套件连接

iOS XML 解析器内存泄漏与 KissXML

java - 如何正确地对 RestEasy 响应进行单元测试?