Ich habe diesen Code unten, um eine Liste von Restaurants und ihre Daten abzurufen. Es speichert jedoch nicht die Daten und jedes Mal, wenn ich versuche, das Array zurückzugeben, gibt es null zurück. Aber wenn ich es drucke, druckt die Daten. Irgendwelche Vorschläge?Abrufen von Daten aus Firebase funktioniert nicht
func getRestaurants()-> Array<Restaurant>{
var baruri = [Restaurant]()
dataBaseRef.child("AthensRestaurants/Restaurants").observe(.value, with: { (snapshot) in
if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshot {
print(snap)
if let restaurantData = snap.value as? Dictionary<String, AnyObject> {
let restaurant = Restaurant(restaurantData: restaurantData)
baruri.append(restaurant)
print(baruri)
}
}
}
})
return baruri
}
Ich habe keine Erfahrung mit Firebase. Aber von dem, was ich sehe, sieht es so aus, als ob der Aufruf zum Abrufen der Liste von Restaurants ein asynchroner Aufruf sein könnte, und die Rückkehr wird aufgerufen, bevor der Block innerhalb von '.observe' ausgeführt wird. Wenn dies der Fall ist, verwenden Sie einen Completion-Handler-Block, um die abgerufenen Daten zurückzugeben. [Dieser Link] (http://stackoverflow.com/questions/34121289/return-bool-in-alamofire-closure/34121496#34121496) könnte eine Hilfe sein. –