从异步后台任务设置 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
}
我是 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
}