Ich verwende derzeit Firebase und versuche, die Anzahl der untergeordneten Elemente in einem Knoten zu ermitteln, um die Zeilen für einen Abschnitt einer UITableViewController
zu ermitteln. Da der Anruf jedoch asynchron ist, wird er nicht ordnungsgemäß gespeichert.Swift - Rückgabewert Asynchroner Aufruf (Firebase)
Hinweis: Ich habe einen Wert namens "count" in der Database, die die Anzahl der untergeordneten ist, zugewiesen, aber die eigentliche Funktion zum Zählen von Kindern ist auch async.
Hier ist mein Code:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let userID = FIRAuth.auth()?.currentUser?.uid
ref = FIRDatabase.database().reference()
var count = 0
if section == 0 {
ref.child("users").child("merchants").child(userID!).child("menu").child(spirits[section]).observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let count = value?["count"] as? Int
print("count in: ", count!)
})
print("count out: ", count)
} else {
count = 0
}
return count
}
Hier ist der Ausgang:
abzählen: 0 abzählen: 0 abzählen: 0 abzählen: 0 abzählen: 0 Zählung in: 1 Zählung in: 1 Zählung in: 1 Zählung in: 1 Zählung in: 1
Ich habe mehrere Stack-Überlauf-Fragen durchsucht, die versuchten, Versand- oder Abschlusscodes zu erklären, und ich konnte nichts zum Arbeiten bekommen. Wie kann ich meine Zählung richtig erhalten?