我有一个函数,该函数获取集合中Firestore文档的计数,并且我希望将此计数用作表视图函数numberOfRowsInSection的返回值。从服务器检索计数并导致程序崩溃之前,将调用该返回。我相信我需要使用闭包来使返回等待完成,但是我不确定如何从闭包中返回整数。我是新手,但对Closures还是新手。
func getCount(completion: @escaping (Int) -> (Int)) {
let today = getToday()
let eventsRef = db.collection("users").document("test@test.com").collection(today)
eventsRef.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
completion((querySnapshot?.count)!)
}
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
getCount { (count) in
self.count = count
}
return count!
}
答案 0 :(得分:2)
您需要设置一个实例数组
var arr = [<#typeHere#>]()
//
返回这里计数
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arr.count
}
并在此处重新加载表格
func getCount(completion: @escaping (Int) -> (Int)) {
let today = getToday()
let eventsRef = db.collection("users").document("test@test.com").collection(today)
eventsRef.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
}
// fill the array here
tableView.reloadData() // if it's a background thread embed code in DispatchQueue.main.async {---}
}
}