我的应用程序正在从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
}
最佳答案
必须重新加载tableview。在do
块中,将代码更改为以下内容:
self.recipes = try JSONDecoder().decode([Recipe].self, from: data)
DispatchQueue.main.async {
self.tableView.reloadData()
}
关于ios - iOS-如何等待在dataTask上下载数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50950400/