尝试更新firebase但删除了节点值

时间:2018-05-24 16:05:02

标签: ios swift firebase firebase-realtime-database

在运行此函数时,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)

1 个答案:

答案 0 :(得分:1)

它发生了,因为之前您的特定节点的值为String。但现在您使用Dictionary更新该节点。

所以这里发生的是:

以前:

-LDH9D... : "a string"

现在:

-LDH9D... : 
     accepted : true

要向具有Dictionary类型值的密钥插入新的String类型值,firebase会删除您之前添加的String。因为您无法添加不匹配的类型。

  

但如果该节点之前有Dictionary,则此更新不会删除该数据。