如何在Swift的表格视图中使用didSelectRowAt识别选择了哪个Firebase子级?

时间:2019-06-23 16:58:20

标签: swift firebase uitableview firebase-realtime-database

我无法确定如何在表视图中识别出我的Firebase数据库中的哪个子项,然后在数据库中更新该子项下的信息。

我发现了一个观察功能,可以正确显示每一行的所有childByAutoID,但它显示的是每一行,而不是所选的特定行,并更新该子项下的信息。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print(tasks[indexPath.row].isFlagged)

    var task = self.tasks[indexPath.row]
    task.isFlagged.toggle()
    guard let uid = Auth.auth().currentUser?.uid else { return }

    var flag = ["isFlagged":false]

    if tasks[indexPath.row].isFlagged == true {
        flag = ["isFlagged":true]
    } else {
        flag = ["isFlagged":false]
    }
    Database.database().reference().child("users").child(uid).child("tasks").observeSingleEvent(of: .value, with: { (snapshot) in
        if let result = snapshot.children.allObjects as? [DataSnapshot] {
            for child in result {
                var theKey = child.key as! String
                print(theKey)
                Database.database().reference().child("users").child(uid).child("tasks").child(theKey).updateChildValues(flag)
            }
        }
    })

}

enter image description here

1 个答案:

答案 0 :(得分:2)

当您阅读Date Item Price Group AvgCost 1/1/18 Hat $5 1 $2 2/1/18 Hat $5 1 $3 1/1/18 Shirt $10 2 $8 2/1/18 Shirt $10 2 $8 1/1/18 Shoes $30 3 $25 2/1/18 Shoes $30 3 $23 时,应该存储字典的根密钥以备以后使用

enter image description here

然后在tasks

中执行此操作
didSelectRowAt

let task = self.tasks[indexPath.row]
Database.database().reference().child("users").child(uid).child("tasks").child(task.key).updateChildValues(flag)