Я делаю это приложение, где пользователи могут дать отзыв о резюме других пользователей. Я храню отзывы в базе данных Firebase в реальном времени. В моем FeedbackViewController у меня есть просмотр таблицы, и мне нужно получить доступ к totalFeedbackNum в моей базе данных, чтобы заполнить мой просмотр таблицы, однако я получаю сообщение об ошибке. Приведенный ниже код комментирует то, каким должен быть код, но он выдает ошибку: Неожиданное возвращаемое значение в void функции.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// var ref: DatabaseReference!
// ref = Database.database().reference()
// let uid = Auth.auth().currentUser?.uid
// ref.child("usernames/\(uid!)/profile/feedback/totalFeedbackNum").observeSingleEvent(of: .value, with: { (snapshot) in
// let value = snapshot.value as? NSDictionary
// let totalFeedbackNum = value?["totalFeedbackNum"] as? Int ?? 0
// return totalFeedbackNum //this throws "Unexpected non-void return value in void function"
// }) { (error) in
// print(error.localizedDescription)
// }
let totalFeedbackNum = 3
return totalFeedbackNum
}
Я думаю, что я должен использовать обработчик завершения, но я не знаю как. Я работаю со Swift 5.
Редактировать: я перешел по первой ссылке в комментариях и получил это, но все еще не работает:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let uid = Auth.auth().currentUser?.uid
var ref: DatabaseReference!
ref = Database.database().reference()
var totalFeedbackNum = 1
print("Starting observing")
ref.child("usernames/\(uid!)/profile/feedback/totalFeedbackNum").observe(.value, with: { (snapshot: DataSnapshot!) in
print("Got snapshot")
let value = snapshot.value as? NSDictionary
totalFeedbackNum = value?["totalFeedbackNum"] as? Int ?? 0
})
print("Returning totalFeedbackNum: \(totalFeedbackNum)");
return totalFeedbackNum
}
Этот код печатает: Начало наблюдения Returning totalFeedbackNum : 1 Начало наблюдения Возврат totalFeedbackNum: 1 Получил снимок Получил снимок