-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
我已经通过多个堆栈溢出搜索试图解释分派或完成代码的问题,我无法获得任何工作。我怎样才能让我的计数恢复正常?