我无法确定如何在表视图中识别出我的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)
}
}
})
}
答案 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
时,应该存储字典的根密钥以备以后使用
然后在tasks
didSelectRowAt
let task = self.tasks[indexPath.row]
Database.database().reference().child("users").child(uid).child("tasks").child(task.key).updateChildValues(flag)