Я загружаю массив JSON с удаленного сервера:
var colores = [Colores]()
func downloadJSONColores(completed: @escaping () -> ()) {
let url = URL(string: "https://../colores.php")
URLSession.shared.dataTask(with: url!) { (data,response,error) in
print(data as Any)
print(response as Any)
if error == nil {
do {
self.colores = try JSONDecoder().decode([Colores].self, from: data!)
DispatchQueue.main.async {
completed()
}
}catch{
}
}
}.resume()
}
У меня есть класс struct для Colores:
struct Colores:Decodable {
let id: Int
let nombre: String
let icono: String
let modelo: Int
let caracterista: Int
}
Мне нужно заполнить PickerView с декодированными объектами JSON, отображающими номер поля в качестве заголовка и сохраняющими идентификатор поля из выбранного элемента средства выбора.
Я вызываю метод downloadJSONColores в viewDidLoad следующим образом:
downloadJSONColores {
coloresPV.reloadData()
}
где coloresPV - мой pickerView, но, очевидно, этот способ работает только для collectionViews, а не для pickerView. Каков наилучший способ заполнить представление pickerView при выполнении downloadJSONColores?