Я пытаюсь написать функцию, которая будет возвращать массив всех моих рабочих, но она возвращается перед извлечением данных из firebaseFinish асинхронная задача Firebase с Swift
вот мой код:
func getWorkersList() -> ([Worker])
{
let workersInfoRef = ref.childByAppendingPath("countries/\(userCountry)/cities/\(userCity)/workers/\(workFieldToRecieve)/")
var workerList = [Worker]()
workersInfoRef.queryOrderedByChild("name").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
print(snapshot.childrenCount)
for rest in snapshot.children.allObjects as! [FDataSnapshot]{
let workerInfo = Worker(uid: rest.value["uid"] as! String, name: rest.value["name"] as! String, city: rest.value["city"] as! String, profession: rest.value["profession"] as! String, phone: rest.value["phone"] as! String, email: rest.value["email"] as! String, country: rest.value["country"] as! String)
workerList.append(workerInfo)
}
}) { (error) in
print(error.description)
}
print(workerList.count)
return workerList
}
Какова цель обратных вызовов? Я думаю, что это может вызвать проблемы с использованием асинхронных обратных вызовов при асинхронном вызове Firebase. (??) – Jay
обратный вызов вернет массив вызывающему абоненту ... вы возвращаете массив до завершения завершения. –
Я не был OP, но ваш ответ, безусловно, способ сделать это. Ему нужно несколько мелких настроек, но это довольно важно. – Jay