使用FirebaseUI删除Firebase数据库中的子项

时间:2016-08-23 18:19:58

标签: swift uitableview firebase firebase-realtime-database firebaseui

FirebaseUI跟踪数据库中的更改并将其与我的TableView同步,这很好。我需要用户在刷一个tableView单元格时能够自己删除子项。

我正在使用populateCellWithBlock来填充我的表格。但是,我找不到任何关于如何删除孩子的信息。 我有什么:

override func viewDidLoad() {
    super.viewDidLoad()

    dataSource = FirebaseTableViewDataSource.init(query: getQuery(),prototypeReuseIdentifier: "Cellident", view: self.tableView)

    dataSource?.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in
        //Filling the table:

        let customCell = cell as! CustomCellTableViewCell

        let snap = obj as! FIRDataSnapshot
        let childString = snap.value as! [String : AnyObject]
        let data = childString["data"] as? String

        customCell.urlLabel.text = String(data!)

    }
    tableView.dataSource = dataSource
    tableView.delegate = self
}

现在,我已经尝试了几种使用数组的方法,但无法弄清楚如何让它们保持同步。我的问题是我无法弄清楚如何删除特定路径上的孩子,这意味着孩子在一个单元格中。如何确保刷到删除的单元格触发从该单元格中移除子项?

我的问题是这里的最佳做法是,如果我希望用户能够删除孩子。显然需要从数据库和tableView中删除它,但由于FirebaseUI会跟踪更改,我确定必须有一种方法可以使用FirebaseUI来删除它吗?

1 个答案:

答案 0 :(得分:0)

所以在尝试之后,我找到了解决方案。我使用MGSwipeTableCell来使单元格可以刷卡并显示删除按钮,然后在其内部进行方便回调,我只是做了:

let removebtn = MGSwipeButton(title: "Delete", backgroundColor: UIColor.redColor(), callback: {
            (sender: MGSwipeTableCell!) -> Bool in

            snap.ref.removeValue() //This

            return true
        })

snap是:

let snap = obj as! FIRDataSnapshot