斯威夫特:活动指示灯与异步网络任务
问题描述:
晚上,我有以下问题:斯威夫特:活动指示灯与异步网络任务
的问题
我的应用程序是一个基于web应用程序。它从下载数据API,您可以通过不同的tableViews
显示结果。
当加载LandingPage时,应用程序开始下载数据。数据通过许多异步任务下载。
我想用户不能使用该应用程序,直到数据全部下载,显示activity indicator
。
我正在考虑在页面加载后立即显示活动指示符,并在调用异步关闭时停止它。
问题是,像5个异步函数,并且每个异步任务都使其他异步任务。
那么,有没有办法知道,如果有一个异步任务运行,如果是:显示指标,如果不是:停止指标?
或者,有更好的设计模式来实现这一目标?
答
解决方案
为@rmaddy曾建议我用GroupDispatch
首先我已经创建GroupDispatch对象的。
对于每个异步调用,我已通过groupDispatch
对象为parameter
,并且在我使用的函数group.enter()
中,因此每次调用该函数时都会进入该组。 在关闭期间,我使用了group.leave()
方法。
最后我用group.notify
在所有的异步调用完成后都会收到通知。
它完美的作品!
使用'DispatchGroup'进行调查。 – rmaddy
请参阅https://*.com/questions/28100847/checking-for-multiple-asynchronous-responses-from-alamofire-and-swift以及其他类似问题。 Alamofire的使用是无关紧要的。使用您需要的实际异步任务。 – rmaddy