簡體   English   中英

Alamofire 的 Codables 錯誤“無法將 '[String: Any]' 類型的值轉換為預期的參數類型 'Data'”

[英]Codables error with Alamofire “Cannot convert value of type '[String : Any]' to expected argument type 'Data'”

我通過使用 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
                    }
                }
            }
        }
    }

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM