【发布时间】:2015-09-20 23:14:40
【问题描述】:
如何等到函数从 alamofire 获取请求中获取所有数据?
GetData.swift 文件:
import Foundation
import Alamofire
import SwiftyJSON
import ObjectMapper
func getStartData() -> Void {
let sharedBranch = BranchSingleton.sharedInstance
let sharedArticle = ArticleSingleton.sharedInstance
Alamofire.request(.GET, Config().apiBranch)
.responseJSON { request, response, result in
let jsonObj = SwiftyJSON.JSON(result.value!)
for obj in jsonObj {
let branch = Mapper<Branch>().map(obj.1.rawString()!)
sharedBranch.addBranch(branch!)
}
}
Alamofire.request(.GET, Config().apiArticle)
.responseJSON { request, response, result in
let jsonObj = SwiftyJSON.JSON(result.value!)
for obj in jsonObj {
let article = Mapper<Article>().map(obj.1.rawString()!)
sharedArticle.addArticle(article!)
}
}
}
ViewController.swift 文件:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
getStartData() // need to wait until all requests are finished then do print
print(sharedArticle.articleList)
}
}
SingletonObj.swift 文件:
import Foundation
class BranchSingleton {
var branchList: [Branch] = []
class var sharedInstance: BranchSingleton {
struct Static {
static let instance: BranchSingleton = BranchSingleton()
}
return Static.instance
}
func addBranch(branch: Branch) {
branchList.append(branch)
}
}
class ArticleSingleton {
var articleList: [Article] = []
class var sharedInstance: ArticleSingleton {
struct Static {
static let instance: ArticleSingleton = ArticleSingleton()
}
return Static.instance
}
func addArticle(article: Article) {
articleList.append(article)
}
}
我需要等到getStartData() 完成,然后再打印单例数组..
我该怎么做?
这个 getStartData 包含超过 2 个请求,但我只是举了 2.. 的例子。
【问题讨论】:
-
等什么?什么数据都进来了才能做什么?
-
删除加载微调器,或类似的东西..在
getStartData()中的所有请求都完成之后.. -
不,不是“类似的东西”。请明确点。你有什么理由等到一切都结束?看,你在想这一切都是错的。你不“等待”。您不能让用户“等待”。你做事是异步的,只是在你去的时候不断更新。
-
我知道,但是我想在两个请求都完成后删除微调器,有什么优雅的方法吗?
标签: ios swift alamofire dispatch-async