swift - 我无法使用具有 3 个选项的 UIPickerView 查询 Firestore

标签 swift google-cloud-firestore uipickerview

我正在尝试使用具有 3 个字段的 UIPickerView 查询 Firestore,但没有显示任何内容。如果我注释掉其中的 2 个字段并运行查询,我会得到结果。知道我遗漏了什么或做错了什么。请帮忙。

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
 if hospNameField.isFirstResponder {
     let itemselected = hospt[row]
     hospNameField.text = itemselected
 } else if teamNameField.isFirstResponder {
     let itemselected = team[row]
     teamNameField.text = itemselected
 } else if mdNameField.isFirstResponder {
     let itemselected = assignedmd[row]
     mdNameField.text = itemselected
 }

 @IBAction func getData(_ sender: Any) {
 if HOSP != (hospNameField.text!) {
     query = Firestore.firestore().collection(PTLIST_REF).whereField("hosp", isEqualTo: (hospNameField.text!))
 } else if TEAM != (teamNameField.text!) {
     query = Firestore.firestore().collection(PTLIST_REF).whereField("team", isEqualTo: (teamNameField.text!))
 } else if ASSIGNEDMD != (mdNameField.text!) {
     query = Firestore.firestore().collection(PTLIST_REF).whereField("assignedmd", isEqualTo: (mdNameField.text!))
     query.getDocuments { (snapshot, error) in
         if let err = error {
             debugPrint("error getting data: \(err)")
         } else {
             for document in (snapshot?.documents)! {
                 print(document.data())
             }

最佳答案

我认为您缺少一个括号。如果你运行查询,你只执行第三个 if 语句。你应该关闭最后一个 else if,然后运行查询。

试试这个:

   @IBAction func getData(_ sender: Any) {
 if HOSP != (hospNameField.text!) {
     query = Firestore.firestore().collection(PTLIST_REF).whereField("hosp", isEqualTo: (hospNameField.text!))
 } else if TEAM != (teamNameField.text!) {
     query = Firestore.firestore().collection(PTLIST_REF).whereField("team", isEqualTo: (teamNameField.text!))
 } else if ASSIGNEDMD != (mdNameField.text!) {
     query = Firestore.firestore().collection(PTLIST_REF).whereField("assignedmd", isEqualTo: (mdNameField.text!))
}
     query.getDocuments { (snapshot, error) in
         if let err = error {
             debugPrint("error getting data: \(err)")
         } else {
             for document in (snapshot?.documents)! {
                 print(document.data())
             }
           }
       }
}

关于swift - 我无法使用具有 3 个选项的 UIPickerView 查询 Firestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56529733/

相关文章:

javascript - Firebase Firestore - 查询大集合中的帖子,其中 groupId 应与数组中的值匹配

javascript - 如何将 firestore 'get' 中的数据加载到变量中?

objective-c - 使用 UIToolBar 上的完成按钮关闭 UIPickerView

ios - 如何将 UIPickerView 选项连接到各个页面

swift - iMac 在 while 循环后卡住

ios - 如何正确推送到另一个导航 Controller

ios - Swift - 函数参数中的闭包

ios - 如何将 slider 值增加 15?

firebase - Firestore : Error: 4 DEADLINE_EXCEEDED: Deadline exceeded

ios - 工作几天后,UITextField.inputView 突然不弹出 UIPickerView