Я использую этот код для извлечения данных из 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)
}
}
Есть идеи, почему при использовании класса обслуживания появляется ошибка?