Swift:具有异步Web任务的活动指示器

时间:2017-07-19 17:40:43

标签: ios swift api asynchronous uiactivityindicatorview

晚上我遇到以下问题:

问题

我的应用是基于网络的应用。它从 API 下载数据,您可以通过不同的tableViews显示结果。

当加载 LandingPage 时,应用程序开始下载数据。通过许多异步任务下载数据。

我希望用户无法使用该应用,直到数据全部下载为止,显示activity indicator

我想在页面加载后立即显示活动指示符,而不是在调用异步闭包时停止它。

问题是像5个异步函数,每个异步任务都会使其他异步任务。

有没有办法了解是否有异步任务正在运行,如果是,显示指标,如果没有:停止指标

或者,有更好的设计模式可以实现这一目标吗?

2 个答案:

答案 0 :(得分:0)

由于你有很多异步,你应该使用promise kit:

Promise Kit

有了这个,您可以管理所有请求,甚至可以为每个请求执行不同的错误处理,并随时显示或隐藏加载指示符。

答案 1 :(得分:0)

解决方案

正如@rmaddy建议我使用GroupDispatch

首先,我创建了 GroupDispatch对象

对于每次异步通话,我已将groupDispatch对象作为parameter传递,并且在函数内部使用group.enter(),因此每次该功能都是叫它进入组内。 在关闭过程中,我使用了group.leave()方法。

最后,我已经使用group.notify在完成所有异步调用时收到通知。

完美无缺!