swift - 所有下载完成后停止事件指示器

标签 swift activity-indicator

好吧,我快要疯了。我是一个快速的初学者,正在进行相当大的编程操作,并且它变得有点难以承受。也许你可以帮忙。

func getDataFromDatamanager() {
    DataManager.getGoldPriceFromQuandlWithSuccess { (QuandlGoldPrice) -> Void in
        let json = JSON(data: QuandlGoldPrice)
        if let datasetMineral = json["dataset"]["dataset_code"].string {
            print("NSURLSession: \(datasetMineral)")
        }
    DataManager.getSilverPriceFromQuandlWithSuccess { (QuandlSilverPrice) -> Void in
        let json = JSON(data: QuandlSilverPrice)
        if let datasetMineral = json["dataset"]["dataset_code"].string {
            print("NSURLSession: \(datasetMineral)")
        }
}

此函数中还有大约 15 个其他调用,它们都需要不同的时间来下载。 我正在调用该函数以在主线程上进行操作并启动事件指示器:

dispatch_async(dispatch_get_main_queue(), {
        self.activityIndicator.startAnimating()
        self.getDataFromDatamanager()
    })

我的问题:如何仅在所有功能下载完毕后停止事件指示器?

最佳答案

引入completedItems:变量。当某些功能下载完成时,您可以增加该值。每次完成后调用停止事件函数,如下所示:-

var completedItems:Int = 0

func getDataFromDatamanager() {
DataManager.getGoldPriceFromQuandlWithSuccess { (QuandlGoldPrice) -> Void in
    let json = JSON(data: QuandlGoldPrice)
    if let datasetMineral = json["dataset"]["dataset_code"].string {
        completedItems = completedItems + 1 // completedItems ++
        stopActivity()
        print("NSURLSession: \(datasetMineral)")
    }
DataManager.getSilverPriceFromQuandlWithSuccess { (QuandlSilverPrice) -> Void in
    let json = JSON(data: QuandlSilverPrice)
    if let datasetMineral = json["dataset"]["dataset_code"].string {
        completedItems = completedItems + 1 // completedItems ++
        stopActivity()
        print("NSURLSession: \(datasetMineral)")
    }

}

func stopActivity() {
     if completedItems == 15  { // give # of functions
        dispatch_sync(dispatch_get_main_queue(), {
            self.activityIndicator.stopAnimating()
        })
      }
}

关于swift - 所有下载完成后停止事件指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36053011/

相关文章:

javascript - React Native - 不变违规

ios - iPhone 6 模拟器上的 indexPath.row 计算不正确,但 4s/5/5s/6plus 上不正确

ios - 如何正确注销并继续到 View Controller ?

ios - if 情况的补充

ios - 以编程方式设置自定义图像大小和位置

swift - 事件指示器未正确显示

ios - 如何在下载图像之前运行事件指示器?

ios - AVCaptureStillImageOutput 和 UIImagePNGRepresentation

swift - 使用 UISwitch 显示/隐藏表格 View 单元格

swift - 如何使用 swift 在 WKWebView 的页面中间显示事件指示器?