1
我想收集一些數據(供進一步使用),這些數據與連續的ALAMOFIRE請求一起獲得。我知道這是一個異步過程,我相信這就是爲什麼當我嘗試打印dataArray
時,它發生在Alamofire
請求結束之前,因此它總是空的(嘗試1:請參閱代碼)。我也嘗試在Alamofire
請求關閉(嘗試2:請參閱代碼)上使用dispatch_async,有時它會重複打印整個數組,並且從不按請求的順序打印。您能否幫我找到正確的方法來做到這一點,也就是說,根據請求順序收集所有收集的信息,然後在適當的時候使用完成的dataArray?收集幾個Alamofire請求的所有響應
import UIKit
import Alamofire
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var dataArray = [String]()
for var a = 4; a <= 9; a++ {
request(.GET, "http://api.fixer.io/2015-09-0\(a)?symbols=USD", parameters: nil, encoding: .JSON)
.responseJSON {
(request, response, json, error) -> Void in
let photoInfos = json as! Dictionary<String, NSObject>
let date = photoInfos["date"]! as! String
dataArray.append(date)
println("request: \(request)")
println("response: \(response?.statusCode)")
println("json: \(json)")
println("error: \(error)")
//attempt 2 <begin>
dispatch_async(dispatch_get_main_queue()) {
println(dataArray) // attempt 2
}
//attempt 2 <end>
}
}
//attempt 1 <begin>
println(dataArray)
//attempt 1 <end>
}
}