Свифт "ожидал декодировать массив <Any>, но вместо этого нашел словарь". - PullRequest
0 голосов
/ 03 апреля 2019

Я использую этот код для извлечения данных из API и установки некоторых переменных в моем контроллере представления, и все работает отлично.Так как я делаю это на нескольких контроллерах, я пытаюсь преобразовать сетевой вызов в класс Service, используя обработчик завершения, чтобы выполнить необходимый код для настройки переменных представления.Служба отлично работает на некоторых контроллерах, но на любом контроллере, который пытается декодировать массив объектов, я получаю сообщение об ошибке

typeMismatch (Swift.Array, Swift.DecodingError.Context (codingPath: [], debugDescription: «Предполагается, что декодируется массив, но вместо этого найден словарь.».Не работает

struct Service {
    static let sharedInstance = Service()

    func fetchPage(url: String, completion: @escaping (Data) -> ()){
        let httpURL = "https://myurl.com/api"

        guard let url = URL(string: httpURL) else { return }        
        var request = URLRequest(url: url)
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        // Other headers here        
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in

            guard let data = data else {return}

            completion(data)

        }
        task.resume()
    }
}

ViewController

        let httpURL = "https://myUrl.com/api"
        Service.sharedInstance.fetchPage(url: httpURL) { (data) in
            do {
                let consults = try 
 ---> Error Happens>> JSONDecoder().decode([Consultation].self, from:data)                 } 
            } catch let jsonErr {
                print(jsonErr)
            }
        }

Есть идеи, почему при использовании класса обслуживания появляется ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...