-1
我目前使用Firebase並試圖獲取節點中的子節點數以確定UITableViewController
節的行數。然而,由於呼叫是異步的,它不能在外部正確保存。在異步調用中分配的Swift - 返回值(Firebase)
注意:我在數據庫中爲兒童分配了一個名爲「count」的值,但用於計數兒童的實際函數也是異步的。
這裏是我的代碼:
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
}
這裏是輸出:
算出來:0 算出來:0 算出來:0 算出來:0 算出來:0 計入:1 計入:1 輸入:1 輸入數:1 輸入數:1
我已經通過多個堆棧溢出搜索試圖解釋分派或完成代碼的問題,我無法獲得任何工作。我怎樣才能讓我的計數恢復正常?