所有下载完成后停止 activity 指示器
stop activity Indicator once all downloads are completed
好吧,我快要疯了。我是一个 swift 初学者,正在进行相当大的编程操作,而且有点不知所措。也许你可以提供帮助。
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 个其他调用,它们都需要不同的时间来下载。
我正在调用函数在主线程上运行并启动 activity Indicator:
dispatch_async(dispatch_get_main_queue(), {
self.activityIndicator.startAnimating()
self.getDataFromDatamanager()
})
我的问题:如何才能在所有函数下载完毕后才停止 activity 指示器?
引入completedItems:变量。您可以在某些功能的下载完成时增加它。每次完成后都会调用停止 activity 函数,如下所示:-
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 初学者,正在进行相当大的编程操作,而且有点不知所措。也许你可以提供帮助。
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 个其他调用,它们都需要不同的时间来下载。 我正在调用函数在主线程上运行并启动 activity Indicator:
dispatch_async(dispatch_get_main_queue(), {
self.activityIndicator.startAnimating()
self.getDataFromDatamanager()
})
我的问题:如何才能在所有函数下载完毕后才停止 activity 指示器?
引入completedItems:变量。您可以在某些功能的下载完成时增加它。每次完成后都会调用停止 activity 函数,如下所示:-
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()
})
}
}