Не могу отобразить данные после использования .getDocuments в Firestore и пытается поместить идентификаторы документов в массив и отображать их с помощью таблицы - PullRequest
3 голосов
/ 30 апреля 2020

У меня есть класс

class List {

var name: String

init(name: String) {

    self.name = name

}
}

, который используется для создания массива. Я объявил массив

var providersList = [List]()

, затем использовал функцию

func downloadData() {

    db.collection("\(finalSelection.lowercased())_providers").getDocuments() { (querySnapshot, err) in
         if let err = err {
             print("Error getting documents: \(err)")
         } else {
             for document in querySnapshot!.documents {
                self.providersList.append(List(name: "\(document.documentID)"))


             }
         }
     }

 }

для загрузки данных. Данные загружаются правильно, потому что ошибки нет, и я также использовал print() для подтверждения правильности данных. Однако когда я использую функции для табличного представления

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "MoreCell", for: indexPath) as! MoreInfoTableViewCell

    cell.moreInfoLabel.text = providersList[indexPath.row].name

    return cell
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return providersList.count
}

, табличное представление не заполняется. Я знаю, что этот метод работает, потому что я использовал что-то похожее на это в другой части моего кода (не загружая данные, а заполняя табличное представление)

Редактировать: я пытался удалить класс и нормально добавить в массив без использования .name из класса. Тем не менее, это тоже ничего не сделало

1 Ответ

2 голосов
/ 30 апреля 2020

Хорошо, так что я нашел решение этого, когда лежал в постели, готовясь ко сну (смеется). В функции downloadData() я должен поместить self.tableView.reloadData () после добавления в массив. Я включу это для всех, кто сталкивался с подобной проблемой, как я.

fun c downloadData () {

db.collection("\(finalSelection.lowercased())_providers").getDocuments() { (querySnapshot, err) in
     if let err = err {
         print("Error getting documents: \(err)")
     } else {
         for document in querySnapshot!.documents {
            self.providersList.append(List(name: "\(document.documentID)"))
            self.tableView.reloadData()


         }
     }
 }

}

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