似乎无法使用布尔值返回检查结果是否存在。它仅适用于打印结果...
func checkSeatAvailable() -> Bool{
var Exist: Bool
let g = DispatchGroup()
let resDate = ResDateTxt.text
let db = Firestore.firestore()
let docRef = db.collection("Reservations").whereField("resDate", isEqualTo: resDate!)
g.enter()
docRef.getDocuments() { (snapshot, error) in
if let snapshot = snapshot {
if snapshot.isEmpty {
print("Document does not exist")
Exist = true
g.leave()
} else {
print("Document data: \(snapshot) ")
Exist = false
g.leave()
}
}
}
g.notify(queue:.main) {}
print("\(Exist)")
return Exist
}
答案 0 :(得分:0)
在函数中添加completion Handler
,因为getDocuments
函数是异步的,并立即返回。您可以像这样修改它。
func checkSeatAvailable(Completion:@escaping((Bool)->())){
//let g = DispatchGroup()
let resDate = ResDateTxt.text
let db = Firestore.firestore()
let docRef = db.collection("Reservations").whereField("resDate", isEqualTo: resDate!)
//g.enter()
docRef.getDocuments() { (snapshot, error) in
if let snapshot = snapshot {
if snapshot.isEmpty {
print("Document does not exist")
//g.leave()
} else {
print("Document data: \(snapshot) ")
Completion(true)
//g.leave()
}
}
}
//g.notify(queue:.main) {}
//print("\(Exist)")
//return Exist
}
然后像这样调用该函数;
checkSeatAvailable { (boolValue) in
print(boolValue)
}