Я создаю приложение чата для обучения программированию на ios. Приложение использует Firebase для аутентификации и т. Д. Я пытаюсь реализовать функцию удаления с помощью метода _comit editstyle. Но я не могу удалить данные изfirebase. Когда я выхожу и снова захожу, я вижу старое сообщение.Насколько я понимаю, я должен выбрать дочерний элемент, соответствующий индексу ячейки. Я пробовал несколько комбинаций с наблюдением, установленным на .childremoved, .value, но ничего не работает.Буду признателен за любую помощь и объяснения.
var ref: DatabaseReference!
var messageArray : [Message] = [Message]()
var postkey = ""
@IBOutlet var heightConstraint: NSLayoutConstraint!
@IBOutlet var sendButton: UIButton!
@IBOutlet var messageTextfield: UITextField!
@IBOutlet var messageTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// declare delegate
messageTableView.delegate = self
messageTableView.dataSource = self
messageTableView.register(UINib(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "customMessageCell")
messageTextfield.delegate = self
ref = Database.database().reference()
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(TableViewTapped))
view.addGestureRecognizer(tapGesture)
retrieveMessages()
}
// TableViewTapped method
@objc func TableViewTapped () {
view.endEditing(true)
}
// TODO: Data source method
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let groupeRef = ref.child("message").child((messageArray[indexPath.row].messageBody))
groupeRef.removeValue()
messageArray.remove(at: indexPath.row)
print(indexPath.row)
messageTableView.deleteRows(at: [indexPath], with: .fade)
}
messageTableView.reloadData()
}
Класс сообщения
class Message {
//TODO: Messages need a messageBody and a sender variable
var messageBody = ""
var sender = ""
}