【发布时间】:2016-12-30 16:42:11
【问题描述】:
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删除它?
【问题讨论】:
-
对于 FirebaseUI(以及一般的 Firebase 数据库),建议您更新数据库中的数据并让 UI 以此为基础更新。这会导致非常单向的数据流,(在我看来)这通常是最容易维护的。
-
@FrankvanPuffelen 谢谢弗兰克,我也这么认为。但是有实际的代码示例吗?如前所述,我正在努力解决如何删除特定的 Childs(来自上面的 tableview 的那些)。对于本地数据,您可以使用 indexPath 之类的东西,但是在这里怎么做呢?
-
我希望
datasource.objectAtIndex()能做到这一点。datasource.objectAtIndex(indexPath).ref.removeValue() -
@FrankvanPuffelen 谢谢,我认为这会导致正确的方向。但是,我对 indexPath 使用什么?它给了我它未定义的错误。这就是我的难处。
标签: swift uitableview firebase firebase-realtime-database firebaseui