Gostaria que um loop for in enviasse várias solicitações de rede para o firebase e passasse os dados para um novo controlador de exibição assim que o método concluir a execução. Aqui está o meu código:
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
Eu tenho algumas preocupações. Primeiro, como espero até que o loop for seja concluído e todas as solicitações de rede sejam concluídas? Não consigo modificar a função observeSingleEventOfType, ela faz parte do SDK da base de firmas. Além disso, vou criar algum tipo de condição de corrida tentando acessar o dateArray de diferentes iterações do loop for (esperança que faça sentido)? Eu tenho lido sobre GCD e NSOperation, mas estou um pouco perdido, pois esse é o primeiro aplicativo que eu criei.
Nota: A matriz de locais é uma matriz que contém as chaves que preciso acessar no firebase. Além disso, é importante que as solicitações de rede sejam acionadas de forma assíncrona. Eu só quero esperar até que TODAS as solicitações assíncronas sejam concluídas antes de passar o dateArray para o próximo controlador de exibição.