我正在开发一个应用程序,它使用Alamofire从少数不同的API获取数据(每个调用都是使用函数完成的)。然后我必须收集所有结果(在我的情况下为Double类型)到一个数组来计算平均值。
只要Alamofire使用异步调用,就不可能简单地从调用内部向数组追加新值。
这是一个函数,它调用负责通过Alamofire获取数据的每个函数:
func collectData() {
fetchFromFirstAPI()
fetchFromSecondAPI() //etc.
}
以下是其中一个功能的示例:
func fetchFromFirstAPI() {
let APIKey = "XXXXXXXXX"
let APIURL = "http://urlapi.com/api" as URLConvertible
let parameters: Parameters = ["APPKEY": APIKey]
Alamofire.request(APIURL, method: .get, parameters: parameters, encoding: URLEncoding.default).validate().responseJSON { response in
switch response.result {
case .success(let data):
let json = JSON(data)
if let result = json["main"]["value"].double {
myArray.append(result)
} else {
print("error")
}
case .failure:
print("error")
}
}
}
阵列:
var myArray: [Double] = []
如何处理?