我是初学者。主要功能是当用户单击单元格的每个按钮时,它将更新数据。但我只是写了一个新数据,它无法更新现有数据。 的 ViewController.swift
此函数写入新密钥不保存现有密钥。我怎么解决?
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("location").queryOrderedByKey().observe(.childAdded, with: {snapshot in
guard let firebaseResponse = snapshot.value as? [String:Any] else
{
print("Snapshot is nil hence no data returned")
return
}
let status = firebaseResponse["status"] as! Int
let key = databaseRef.childByAutoId().key
let up = ["id":key,
"status":status] as [String : Any]
databaseRef.child("location").child(key).setValue(up)
self.posts.insert(postStruct(status:status,key:key), at: 0)
self.tableView.reloadData()
})
这是我在谷歌驱动器中的练习xcode
https://drive.google.com/open?id=0B2jj6V1tOGcVTm9JSy1uNV9fZnM
这是图片的firebase数据:
答案 0 :(得分:1)
问题出在这一行
let key = databaseRef.childByAutoId().key
您正在创建新的autoID
,而不是使用snapshot.key
中的当前子级autoId,因此请将该行更改为低于1,然后您将全部设置为。
let key = snapshot.key