gpt4 book ai didi

ios - 在异步方法中准备好数据后如何重新加载 TableView 的数据

转载 作者:行者123 更新时间:2023-12-02 02:17:04 24 4
gpt4 key购买 nike

我使用URLSession从资源API获取tableview数据的数据。因此,我需要在 URLSession 任务准备好数据后reloadData()。但这会导致,

UITableView.reloadData() must be used from main thread only

当我运行应用程序时,表格 View 一开始是空白的。只有在我滚动屏幕后才会显示数据。但如果不在URLSession任务中调用reloadData(),屏幕就一直是空白的。

func getData() {
let dataUrl = URL(string: "http://www.example.com/app/?json=1")
let task = URLSession.shared.dataTask(with: dataUrl! as URL) {data, response, error in
guard let data = data, error == nil else { return }
do {
self.data = try JSONSerialization.jsonObject(with: data, options: []) as! [String:Any]
self.tableView.reloadData()
}

} catch let error {
print(error)
}
}
task.resume()
}

最佳答案

您永远不应该从后台线程访问任何 UI,您必须从主线程执行此操作,为此您可以使用 gcd:

DispatchQueue.main.async {
self.tableView.reloadData()
}

虽然从后台线程访问 UI(读取 UIKit 的所有内容)有时可能会起作用,但您最终会遇到错误,包括崩溃、显示放大或 Gazenbug。

关于ios - 在异步方法中准备好数据后如何重新加载 TableView 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48296675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com