【发布时间】:2019-01-27 00:47:07
【问题描述】:
我正在构建一个聊天应用程序作为 ios 编程的学习之旅。该应用程序使用 firebase 进行身份验证等。我正在尝试使用 _comit editingstyle 方法实现删除功能。但我无法从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 = ""
}
【问题讨论】:
标签: ios swift firebase firebase-realtime-database