如何在带有Swift的表视图中使用didSelectRowAt确定选择了哪个Firebase子级?

如何在带有Swift的表视图中使用didSelectRowAt确定选择了哪个Firebase子级?,swift,firebase,uitableview,firebase-realtime-database,Swift,Firebase,Uitableview,Firebase Realtime Database,我无法确定如何在表视图中确定正在选择Firebase数据库中的哪个子项,然后更新数据库中该选定子项下的信息 我发现了一个observe函数,它可以正确地显示每一行的所有childByAutoID,但它会显示每一行,而不是所选的特定行,并更新该子行下的信息 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print(tasks[indexPath.row].is

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

我发现了一个observe函数,它可以正确地显示每一行的所有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)
            }
        }
    })

}

阅读
任务时,应存储字典的根键,以便以后使用

然后在
didSelectRowAt

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


阅读
tasks
时,应存储字典的根键,以便以后使用

然后在
didSelectRowAt

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