在运行此函数时,firebase采用我的布尔值但不知何故我的节点名/值被删除。当我再次在我的模拟器中刷新并运行它时,数据将从模拟器中删除但存在于firebase中。想知道我的代码as shown in the image
出了什么问题func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
var x: Bool = false
let acceptTitle = grocerys[indexPath.row].accepted ? "Decline" : "Buy"
let accept = UIContextualAction(style: .normal, title: acceptTitle) { (action, view, nil) in
x = !x
let values = ["accepted": x]
self.databaseRef?.child(self.grocerys[indexPath.row].id).updateChildValues(values)
答案 0 :(得分:1)
它发生了,因为之前您的特定节点的值为String
。但现在您使用Dictionary
更新该节点。
所以这里发生的是:
以前:
-LDH9D... : "a string"
现在:
-LDH9D... :
accepted : true
要向具有Dictionary
类型值的密钥插入新的String
类型值,firebase会删除您之前添加的String
。因为您无法添加不匹配的类型。
但如果该节点之前有
Dictionary
,则此更新不会删除该数据。