Я пытаюсь вызвать асинхронную функцию (наблюдая за значением базы данных Firebase) и использую группу диспетчеризации для уведомления, когда данные извлекаются из указанной асинхронной функции.
Это происходит в моем tableView (_tableView :, cellForRowAt indexPath :) Метод UITableViewDelegate.Сначала я объявляю «ячейку» как пользовательский подкласс UITableViewCell (в данном случае «CommentCell»).Затем я создаю группу рассылки, захожу в группу, извлекаю данные из базы данных, использую эти данные для заполнения своей ячейки, а затем покидаю / уведомляю группу рассылки.Когда группа получает уведомление, я просто хочу вернуть свою ячейку.
По какой-то причине функция говорит, что я не возвращаю UITableViewCell, даже если есть только один путь, по которому моя функция может пройти вниз,и это заканчивается возвращением CommentCell.Вероятно, проблема вызвана тем, что я получаю эту ошибку при попытке вернуть ячейку:
Выражение типа "CommentCell?"не используется
Вот мой tableView (_ tableView :, cellForRowAt indexPath :) Метод делегата:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell: CommentCell!
let group = DispatchGroup()
group.enter()
Database.database().reference().child("Users/\(comments[indexPath.row].uid)").observeSingleEvent(of: .value) { (snapshot) in
let data = snapshot.value as! [String:Any]
cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? CommentCell
cell.parentVC = self
cell.uid = self.comments[indexPath.row].uid
cell.photoUrl = data["photoUrl"] as? String
cell.imageView?.image = UIImage(named: "profile")?.resize(targetSize: CGSize(width: 35, height: 35))
cell.imageView?.layer.cornerRadius = 17.5
self.loadImage(string: cell.photoUrl, cell: cell)
cell.imageView?.clipsToBounds = true
cell.textLabel?.text = data["name"] as? String
cell.textLabel?.font = .boldSystemFont(ofSize: 15)
cell.textLabel?.numberOfLines = 0
cell.detailTextLabel?.textColor = .darkGray
cell.detailTextLabel?.font = .systemFont(ofSize: 14)
cell.detailTextLabel?.text = self.comments[indexPath.row].text
cell.detailTextLabel?.numberOfLines = 0
cell.selectionStyle = .none
group.leave()
}
group.notify(queue: .main) {
return cell
}
}
Прикреплено изображение кода и ошибок.