gpt4 book ai didi

swift - 在异步任务后插入 UIViewtable

转载 作者:行者123 更新时间:2023-11-28 10:56:11 25 4
gpt4 key购买 nike

我正在尝试在我从 URL 解析 JSON 数据的异步任务后更新我的 tableView,我正在学习 Swift,但我不明白这段代码有什么问题。 Messages 是一个字符串数组,我在其中为每个 json 对象附加了一个 message_body。我正在等待任务执行 HTTP 请求以调用方法 finishedLoading,我尝试在我的 tableView 中插入行。我收到此错误 “无效更新:第 0 节中的行数无效。”

感谢帮助

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text = messages[indexPath.row]
return cell
}

func finishedLoading(array: Array<String>) {
TableView.beginUpdates()
TableView.insertRows(at: [IndexPath(row: messages.count-1, section: 0)], with: .automatic)
TableView.endUpdates()
TableView.reloadData()
}

public func init_chat()
{
var request = URLRequest(url: URL(string: "URL")!)
request.httpMethod = "GET"
let session = URLSession.shared

session.dataTask(with: request) {data, response, err in
let json = try! JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any]
let data = json?["data"] as? [[String: Any]]
for message in data! {
if let name = message["message_body"] as? String {
self.messages.append(name)
}
}
self.finishedLoading(array: self.messages)
}.resume()
}

最佳答案

添加这个函数:

func numberOfRows(inSection section: Int) -> Int {
return messages.count
}

并替换这段代码:

self.finishedLoading(array: self.messages)

使用这段代码:

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

关于swift - 在异步任务后插入 UIViewtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476027/

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