gpt4 book ai didi

swift - OperationsQueue 完成所有操作后如何重新加载 UITableView

转载 作者:可可西里 更新时间:2023-10-31 23:46:20 24 4
gpt4 key购买 nike

<分区>

我正在尝试通过调用 .reloadData() 更新 UITableView 中的单元格,但它会在进程完成之前重新加载数据,因此自数组以来并没有真正更新任何内容它从中获取数据仍然是空的。我构建代码的方式是,它进行了一堆 API 调用,每个调用都是 Swift OperationOperationQueue 执行这些操作。现在需要做的是当所有任务都完成后调用 self.tableView.reloadData() 。我试过将它放在操作的完成 block 中,但它不是主线程,因此不会执行。

如有任何帮助,我们将不胜感激。

编辑:我尝试使用 OperationQueue.mainOperationQueue 的线程更改为主线程,并添加在所有其他操作完成后运行的最终操作done 包含 self.tableView.reloadData()。尽管这允许我重新加载 UITable,但它会导致 UI 滞后。 (我在 UITableView 中有一个拉动刷新,这使得主线程的使用很明显。)

示例代码:

let operation1 = BlockOperation {
//Gets Data from server & waits until task is complete before ending
}

let operation2 = BlockOperation {
//Parse JSON
}

let updateOperation = BlockOperation {
self.tableView.reloadData()
//Throws a "UITableView.reloadData() must be used from main thread only"
}

operation2.addDependency(operation1)
updateOperation.addDependency(operation2)

let queue = OperationQueue()
queue.addOperation(operation1)
queue.addOperation(operation2)
queue.addOperation(completionOperation)

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