В структурах есть две основные ошибки: data
равно [CarItems]
и priceNet
равно Double
.
Вы должны получить ошибку
Несоответствие типа словаря: ожидается декодирование словаря, но вместо него найден массив.
Объявить все элементы структуры необязательными и назвать их camelCased
struct OfferList: Decodable {
let data: [CarItems]
let status: String
let count: Int
}
struct CarItems: Decodable {
let id: String
let image: URL
let manufacturer: String
let model: String
let priceNet: Double
let priceOld: Int
let priceGross: Int
let powerKw: String
let powerPs: String
let milage: String
let fueltype: String
}
Объявление массива источника данных без наблюдателя свойства
var viewModels = [CarItems]()
Расшифруйте JSON
URLSession.shared.dataTask(with: url) { (data, _, error) in
if let error = error { print(error); return }
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let result = try decoder.decode(OfferList.self, from: data!)
self.viewModels = result.data
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch {
print(error)
}
}.resume()
Убедитесь, что datasource
и delegate
табличного представления подключены к контроллеру представления, предпочтительно в Интерфейсном Разработчике.