Таблица не загружает информацию - PullRequest
0 голосов
/ 25 апреля 2020

Итак, я пытаюсь сделать запрос к моей базе данных пожарного магазина и собрать всех пользователей, у которых их сохраненное поле «docIDFromRide» равно текущему идентификатору документа (docID), и загрузить его в табличное представление. до сих пор у меня есть ощущение, что я поступаю об этом неправильно, так как я не получаю никаких ошибок из-за отсутствия документов или отображаемых имен, напечатанных на консоли

var myUsers:[AttendingUser] = [] // declaring array


override func viewDidLoad() {
    super.viewDidLoad()
    getUsers()
    userTable.delegate = self
    userTable.dataSource = self
}
// table view stuff
func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    myUsers.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "attendCell", for: indexPath)
    let user = myUsers[indexPath.row]
    cell.textLabel?.text = user.displayName
    return cell
}

// extension and where the firebase query is
extension RideEventViewController{
    func getUsers(){
        let db = Firestore.firestore()
        db.collectionGroup("EventAttendees").whereField("docIDFromRide", isEqualTo: docID).getDocuments { (snapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                let documents = snapshot!.documents
                try! documents.forEach{document in
                    let myUser: AttendingUser = try document.decoded()
                    print(myUser.displayName)
                    //Appending the data to the array
                    self.myUsers.append(myUser)
                }
                // Reloading tableview after the foreach
                self.userTable.reloadData()
            }
        }
    }
}

Вторая попытка

    extension RideEventViewController{
    func getUsers(){
        let db = Firestore.firestore()
        let eventRef = db.collection("EventAttendees")
        eventRef.whereField("docIDFromRide", isEqualTo: docID)
            .getDocuments() { (querySnapshot, err) in
                if let err = err {
                    print("Error getting documents: \(err)")
                } else {
                    for document in querySnapshot!.documents {
                    print("\(document.documentID) => \(document.data())")
                        let dn = document.get("displayName")
                        let uid = document.get("uid")
                        print("\(dn) \(uid)")
                        let myUser: AttendingUser = try! document.decoded()
                        self.myUsers.append(myUser)
                    }
                    self.userTable.reloadData()
            }
        }
    }
}

Он правильно хранит пользователей в базе данных, просто не вытягивая и не вставляя в представление таблицы.

макет базы данных Database layout

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...