0

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

@IBOutlet weak var syncHealthProgress: UIProgressView!

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

我想做的事:每次 API 调用成功时,我都想将进度提高 1/6。

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

有什么提示吗?

4

1 回答 1

1

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

DispatchQueue.main.async {
    // code to run on main queue
}
于 2017-09-18T18:03:01.317 回答