小编mrp*_*apa的帖子

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

我正在开发一个应用程序,它使用Alamofire从几个不同的API中获取数据(每个调用都是使用函数完成的).然后我必须收集所有结果(在我的情况下为Double类型)到一个数组来计算平均值.

只要Alamofire使用异步调用,就不可能简单地从调用内部向数组添加新值.

这是一个函数,它调用负责通过Alamofire获取数据的每个函数:

func collectData() {
   fetchFromFirstAPI()
   fetchFromSecondAPI()  //etc.
}
Run Code Online (Sandbox Code Playgroud)

以下是其中一个功能的示例:

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")
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

而阵列:

var myArray: [Double] = []
Run Code Online (Sandbox Code Playgroud)

怎么处理呢?

asynchronous swift alamofire

5
推荐指数
1
解决办法
1812
查看次数

标签 统计

alamofire ×1

asynchronous ×1

swift ×1