从异步后台任务设置 UIProgressView

Setting UIProgressView from asynchronous Background Tasks

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

@IBOutlet weak var syncHealthProgress: UIProgressView!

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

我想做的:每次API调用成功我想把进度提高1/6。

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

有什么提示吗?

如果您只是想确保 UI 更新逻辑在主线程上运行,那么只需执行以下操作:

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