我的应用程序正在从API下载一些数据,我想将这些数据保存在用于填充表格视图的数组中。但是,当开始建立表视图时,尚未下载数据,并且我的数组为空。
var recipes: [Recipe] = []
func getData(completionHandler: @escaping ([Recipe]) -> Void) {
let urlString = "api_url"
guard let url = URL(string: jsonURL) else { return }
URLSession.shared.dataTask(with: url) { (data, response, err) in
guard let data = data else { return }
do {
let recipes: [Recipe] = try JSONDecoder().decode([Recipe].self, from: data)
DispatchQueue.main.async {
self.recipes = recipes
}
} catch {
}
}.resume()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.recipes.count
}
答案 0 :(得分:4)
您必须重新加载tableview。在您的do
块中,将代码更改为以下内容:
self.recipes = try JSONDecoder().decode([Recipe].self, from: data)
DispatchQueue.main.async {
self.tableView.reloadData()
}
答案 1 :(得分:0)
下载并设置食谱后,只需致电tableView.reloadData()
:
DispatchQueue.main.async {
self.recipes = recipes
self.tableView.reloadData()
}