Я пишу приложение, в котором я хочу заполнить 2 зависимых UIPickerView с марками и моделями автомобилей.
Я анализирую следующий файл json на входе, содержащий входные данные для моделей автомобилей:
[{
"brand": "ALFA ROMEO",
"models": [
"Mito (145)",
"145/146 (930)",
"147 (937)",
"Giulietta (940)",
"155 (167)",
"156 (932)",
"159 (939)",
"Giulia (620)",
"164 (164)",
"166 (136)",
"GTV / Spider (916)",
"Brera",
"Spider (939)",
"GT Coupé (937)",
"4C (643)",
"Stelvio (630)"
]},
{
"brand": "AMC",
"models": [
"Alliance",
"Concord",
"Eagle",
"Encore",
"Spirit"
]
},
...
]
Я хочу получить список марок автомобилей в первом UIPickerView и передать последний в соответствии с выбором пользователя в первом ...
Я использовал следующую структуру для анализа и получения jsondata
struct carBrands : Codable {
let brand : String
let models : [String]
}
Эта функция позволяет мне анализировать json и получать объект автомобилей, который зависит от структуры
var cars:carBrands?
А вот декодер json
let url = Bundle.main.url(forResource: "carModels", withExtension: "json")
/*let jsonData = try? Data(contentsOf: url!)
let jsonResponse = try? JSONSerialization.jsonObject(with: jsonData!)*/
URLSession.shared.dataTask(with: url!) { (data, response
, error) in
guard let data = data else { return }
do {
let decoder = JSONDecoder()
let carData = try decoder.decode(carBrands.self, from: data)
print(carData)
self.cars = carData
return
}catch let err {
print("Err", err)
}
}.resume()
Iполучите эту ошибку на xcode
Err typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))
Не могли бы вы показать ле хитрости, чтобы правильно заполнить мои uipickerviews?
Спасибо.