【发布时间】:2020-12-14 13:19:24
【问题描述】:
基本上我希望下面的 UIPickerView 显示来自 URL 的 JSON 提供的最新选项 - 似乎重新安装应用程序会获取最新数据,但之后它是相同的。有没有我没有做的事情来正确重新加载数据?
以下是我目前的代码:
struct Model : Decodable {
let model : String
}
在viewDidLoad
let url = URL(string: "https://www.test.com/test/test")!
let dataTask = URLSession.shared.dataTask(with: url) { data, _, error in
if let error = error { print(error); return }
do {
let result = try JSONDecoder().decode([Model].self, from: data!)
self.models = result.map{$0.model}
DispatchQueue.main.async {
self.pickerview.reloadAllComponents()
}
} catch { print(error) }
}
dataTask.resume()
使用的选取器数据源方法:
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return models.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return models[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
TextField.text = models[row]
}
我认为在 Viewdidload 中执行此操作会解决此问题,但如果在 URL 中更新 JSON,UIPickerView 列表仍会显示旧的选项列表。
DispatchQueue.main.async {
self.pickerview.reloadAllComponents()
}
【问题讨论】:
标签: swift uipickerview