使用Alamofire对不同API进行多次调用 - 如何将结果保存到数组中?

时间:2016-12-05 01:55:59

标签: swift asynchronous alamofire

我正在开发一个应用程序,它使用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] = []

如何处理?

0 个答案:

没有答案