【问题标题】:delete tableView cell, and remove data from firebase删除 tableView 单元格,并从 firebase 中删除数据
【发布时间】:2018-09-01 10:19:12
【问题描述】:

我是 swift 和 firebase 的新手。在这里做了一些研究,找不到可以解决我的问题的解决方案,缺乏经验。

尝试从 firebase 中删除 tableView Cell 时遇到问题“'Group' 类型的值没有成员 'ref'”

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

    if editingStyle == .delete {
        let ref = groupsArray[indexPath.row].ref
        ref!.removeValue()
        groupsArray.remove(at: indexPath.row)

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

任何想法我做错了什么?

表格视图

    extension ChatViewController: UITableViewDelegate, UITableViewDataSource{
func numberOfSections(in tableView: UITableView) -> Int {
    return 1

}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return groupsArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = groupsTableView.dequeueReusableCell(withIdentifier: "groupTableViewCell", for:indexPath) as?
        GroupTableViewCell else {return UITableViewCell()}
    let group = groupsArray[indexPath.row]
    cell.configureCell(title: group.groupTitle, description: group.groupDesc, membersCount: group.membersCount)
    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    guard let groupFeedViewController = storyboard?.instantiateViewController(withIdentifier: "GroupFeedViewController") as? GroupFeedViewController else {return}
    groupFeedViewController.initData(forGroup: groupsArray[indexPath.row])
    presentDetail(groupFeedViewController)

}}

团体课

    import Foundation

    class Group {
private var _groupTitle: String
private var _groupDesc: String
private var _key: String
private var _memberCount: Int
private var _members: [String]

var groupTitle: String {
    return _groupTitle
}

var groupDesc: String {
   return _groupDesc
}
var key: String {
    return _key
}
var membersCount: Int {
    return _memberCount
}
var members: [String] {
    return _members
}

init(title: String, description: String, key: String, members: [String], memberCount: Int){
    self._groupTitle = title
    self._groupDesc = description
    self._key = key
    self._members = members
    self._memberCount = memberCount
}}

【问题讨论】:

  • 请发布填充表格视图的代码。您可能只需要从 firebase 中删除数据,tableview 就会自动更新。
  • "从 firebase 中删除 tableView 单元格" 这没有任何正确的意义。
  • 已编辑,对以前的问题表示抱歉。
  • @rMickeyD 在顶部添加了代码

标签: swift firebase firebase-realtime-database swift4


【解决方案1】:

首先,您不会从 Firebase 中删除 tableViewCell,但您可以从 Firebase 中删除您提取的数据以填充您的 tableView

其次,您做错了什么是试图从数组中获取ref 的类值。

第三,从网络上删除数据后,您仍然需要从表格中删除单元格,您的代码看起来可以正常工作,但为了完整起见,我将其放在这里。

要从 Firebase 中删除值,您需要创建一个引用,然后从那里处理内容。像这样:

let ref = Database.database().reference(fromURL: yourProjectURL)
let groupRef= ref.child("groups").child(groupsArray[indexPath.row].key)
// ^^ this only works if the value is set to the firebase uid, otherwise you need to pull that data from somewhere else.
groupRef.removeValue()

然后从数组中删除该项:

groupsArray.remove(at: indexPath.row)

并从tableView中删除该行:

tableView.deleteRows(at: [indexPath], with: .automatic)

一切都应该是这样的:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        let ref = Database.database().reference(fromURL: yourProjectURL)
        let groupRef= ref.child("groups").child(groupsArray[indexPath.row].key)
        // ^^ this only works if the value is set to the firebase uid, otherwise you need to pull that data from somewhere else.
        groupRef.removeValue()
        groupsArray.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
    }
}

【讨论】:

  • 这个值应该是多少? groupsArray[indexPath.row]
  • 所以我按照你说的做了,不幸的是这对我没有帮助,现在应用程序崩溃并出现错误“原因:'无效更新:第 0 节中的行数无效。”
  • 你能编辑你的问题并将代码发布到这个函数tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)
  • 如果我将代码发布到你提到的函数中,我得到未解析的 indexPath 标识符
  • 您能发布您的groupsArray 持有的内容吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多