iOS SWIFT5:检查Firestore中是否存在特定的字段文件

时间:2020-07-10 00:13:01

标签: swift google-cloud-firestore

似乎无法使用布尔值返回检查结果是否存在。它仅适用于打印结果...

    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
    }

1 个答案:

答案 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)
 }