Ошибка Codables с Alamofire «Невозможно преобразовать значение типа« [String: Any] »в ожидаемый тип аргумента« Данные »» - PullRequest
0 голосов
/ 01 ноября 2019

Я получил ответ от API с помощью Alamofire. Этот ответ имеет вид [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 Ответ

1 голос
/ 01 ноября 2019

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