2017-05-15 48 views
0

我是初學者。主要功能是當用戶單擊單元格的每個按鈕時,它將更新數據。但我只寫了一個新的數據,它不能更新現有的數據。 ViewController.swift如何在TableViewcell中保存Swift的Firebase密鑰

此函數寫入的新密鑰不保存現有密鑰。我該如何解決?

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

這是火力點的數據進行圖像:

This is firebase data for image

+0

當您在tableCell中顯示數據時,是否將該autoId與狀態數據一起存儲?顯示您從Firebase –

+0

中檢索數據的位置,如果我不使用autoId,如何使用密鑰更新? – Peter

+0

autoId是你的鑰匙,所以你需要它來更新你的狀態值 –

回答

1

問題是在這條線

let key = databaseRef.childByAutoId().key 

你正在創造新的autoID而是採用了當前孩子的AutoID從snapshot.key,所以更改了該行與下面一個,你都準備好去。

let key = snapshot.key