Вы забыли перезагрузить UITableView
после получения данных с сервера, поэтому вам необходимо перезагрузить UITableView
с помощью:
self.tableView.reloadData()
После цикла for
.Потому что это асинхронный вызов, в котором вам нужно подождать, пока вы не получите данные с сервера.
И ваш код будет выглядеть так:
override func viewDidLoad() {
super.viewDidLoad()
let reviewTopic = Firestore.firestore().collection("usersIds").document(userEmail!).collection("reviews")
reviewTopic.getDocuments() {
(QuerySnapshot,err) in
if let err = err {
print("Error getting documents: \(err)");
} else {
for document in QuerySnapshot!.documents {
self.count += 1
print("\(document.documentID) => \(document.data())");
}
print("Count = \(self.count)");
self.tableView.reloadData()
}
print("Count from viewDidLoad: ", self.count) // prints 2
}
}
Еще одна вещь, которую вы должны создать объект классаи сохраните все данные в объекте класса, а затем получите доступ к этим данным в вашем методе cellforrow
и numberofrows
.Или вы можете использовать протокол Codable
для анализа вашего JSON
с сервера и сохранения данных сервера.
И с этим вы можете легко управлять своим источником данных UITableView
, а также узнавать, какая ячейка нажаталегко.