gpt4 book ai didi

ios - 从 Firebase 单元格中删除数据

转载 作者:行者123 更新时间:2023-11-30 10:51:49 26 4
gpt4 key购买 nike

我正在构建一个聊天应用程序,作为 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 = ""
}

最佳答案

更新您的代码并确保使用子 key :

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {


if editingStyle == .delete {

self.ref.child("message").child((messageArray[indexPath.row].messageBody)).removeValue { error, _ in

print(error)
}
messageArray.remove(at: indexPath.row)
print(indexPath.row)

messageTableView.deleteRows(at: [indexPath], with: .fade)


}
messageTableView.reloadData()


}

在控制台中检查数据库的更新值。

关于ios - 从 Firebase 单元格中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com