Ich versuche, eine Funktion zu schreiben, die ein Array aller meiner Arbeiter zurückkehren, aber es zurückkehrt, bevor die Daten von FeuerbasisFertig asynchrone Aufgabe in Firebase mit Swift
hier Abrufen ist mein Code:
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
}
Was ist der Zweck der Rückrufe? Ich denke, das kann Probleme bei asynchronen Callbacks bei einem asynchronen Firebase-Aufruf verursachen. (??) – Jay
Der Callback gibt das Array an den Aufrufer zurück ... Sie geben das Array zurück, bevor der withBlock abgeschlossen ist. –
Ich war nicht der OP, aber Ihre Antwort ist sicherlich eine Möglichkeit, es zu tun. Es braucht ein paar kleinere Verbesserungen, aber es ist ziemlich pünktlich. – Jay