【发布时间】:2017-05-15 04:24:37
【问题描述】:
我是初学者。主要功能是当用户单击单元格的每个按钮时,它将更新数据。但是我只是写了一个新数据,它不能更新现有数据。 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()
})
这是我在 google drive 中的练习 xcode
https://drive.google.com/open?id=0B2jj6V1tOGcVTm9JSy1uNV9fZnM
这是图片的 Firebase 数据:
【问题讨论】:
-
当您在 tableCell 中显示数据时,您是否将该 autoId 与您的状态数据一起存储?显示您从 Firebase 检索数据的位置
-
如果不使用autoId,如何使用key更新?
-
该 autoId 是您的密钥,因此您需要使用它来更新您的状态值
-
我说的是这个
childByAutoId(),它会创建新的autoId,比如KHGx7IADzSquz7I8u,你现在得到了吗? -
let key = databaseRef.childByAutoId().key let up = ["id":key] databaseRef.child("location").child(key).setValue(up)我使用这个函数它会写新的密钥而不是存储密钥的现有数据
标签: ios swift xcode firebase firebase-realtime-database