从异步后台任务设置UIProgressView

时间:2017-09-18 17:50:54

标签: swift background urlsession

我是Swift的新手,并构建了一个小型应用程序,它将一些HealthKit数据传输到自构建的Web服务。 我在我的Main.storyboard中放置了一个UIProgressView并将其连接到ViewController.swift:

@IBOutlet weak var syncHealthProgress: UIProgressView!

在一个操作中,通过ViewController外的多个步骤调用Web服务。首先,我获取在后台完成的健康数据(HKStatisticsCollectionQuery)。在后台任务中,我获取结果并使用数据(URLSession)进行API调用,这也是异步完成的。

我想做什么:每次API调用成功时,我都希望将进度提高1/6。

那么最佳做法是什么?无法从主线程外部访问UI(尝试将syncHealthProgress作为参数传递给看起来很脏且不起作用的API调用)。

任何提示?

1 个答案:

答案 0 :(得分:1)

如果您只是想确保您的UI更新逻辑在主线程上运行,那么就这样做:

DispatchQueue.main.async {
    // code to run on main queue
}