gpt4 book ai didi

ios - 收集几个 Alamofire 请求的所有响应

转载 作者:行者123 更新时间:2023-11-28 06:59:03 25 4
gpt4 key购买 nike

我正在尝试将通过连续的 ALAMOFIRE 请求获得的一些数据收集到一个数组中(以供进一步使用)。我知道有一个异步过程,我相信这就是为什么当我尝试打印出 dataArray 时,它发生在 Alamofire 请求结束之前,所以它总是空的(尝试1:请看代码)。我还尝试在 Alamofire 请求关闭时使用 dispatch_async(尝试 2:请参阅代码),有时它会重复打印出完整的数组,而不是按请求的顺序打印。你能帮我找到正确的方法吗,意思是,根据请求顺序收集所有收集的信息,然后在适当的时候使用完成的 dataArray?

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>
}
}

最佳答案

您应该使用例如 SwiftEventBus 并将其与 Controller 类分开。当来自服务器的响应到来时,swiftEventBus 会将事件传递给 MainThread( Controller )。就三个方法:

  • SwiftEventBus.post("名称")
  • SwiftEventBus.onMainThread(...)
  • SwiftEventBus.on(...)

还需要回复吗?如果是,我会延长我的回复!

关于ios - 收集几个 Alamofire 请求的所有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32513462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com