最佳答案
我想要一个 for in 循环发送一堆网络请求到 firebase,然后将数据传递给一个新的视图控制器一旦方法完成执行。这是我的代码:
var datesArray = [String: AnyObject]()
for key in locationsArray {
let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)")
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
datesArray["\(key.0)"] = snapshot.value
})
}
// Segue to new view controller here and pass datesArray once it is complete
我有几个顾虑。首先,我如何等待for循环完成,所有的网络请求都完成?我不能修改observeSingleEventOfType函数,它是firebase SDK的一部分。此外,我是否会通过尝试从for循环的不同迭代访问datesArray来创建某种竞争条件(希望有意义)?我一直在阅读关于GCD和NSOperation,但我有点迷失,因为这是我建立的第一个应用程序。
注意:位置数组是一个数组,其中包含我需要在firebase中访问的键。另外,网络请求是异步发出的,这一点很重要。我只是想等到所有的异步请求完成之前,我传递datesArray到下一个视图控制器。