我是Swift的新手,并构建了一个小型应用程序,它将一些HealthKit数据传输到自构建的Web服务。 我在我的Main.storyboard中放置了一个UIProgressView并将其连接到ViewController.swift:
@IBOutlet weak var syncHealthProgress: UIProgressView!
在一个操作中,通过ViewController外的多个步骤调用Web服务。首先,我获取在后台完成的健康数据(HKStatisticsCollectionQuery)。在后台任务中,我获取结果并使用数据(URLSession)进行API调用,这也是异步完成的。
我想做什么:每次API调用成功时,我都希望将进度提高1/6。
那么最佳做法是什么?无法从主线程外部访问UI(尝试将syncHealthProgress作为参数传递给看起来很脏且不起作用的API调用)。
任何提示?
答案 0 :(得分:1)
如果您只是想确保您的UI更新逻辑在主线程上运行,那么就这样做:
DispatchQueue.main.async {
// code to run on main queue
}