2017-06-21 80 views
1

我試圖從firebase數據庫中獲取所有數據並更新或設置(如果爲零)不同的值。例如我有5個用戶:swift firebase迭代每個快照值來更新/設置一個值

[1-喬恩likedby:傑夫,2-傑夫likedby:無,3-傑克,4-墊,5-泰勒likedby:喬恩]

應該更新/組每個值不同(當按下按鈕更新/設定值並轉到下一個值。

我的代碼表明,我可以重複,但我對如何設置每個值的任何建議。
或者是它不可能在火力點快照?如果是這樣,請通過其他或類似方法建議/建議解決問題。

Database.database().reference().child("posts").observeSingleEvent(of: .value, with: { snapshot in 
     print("##########") 
     var dictionary = snapshot.value as! [String:AnyObject] 

     for(_,value) in dictionary{ 
      if let firstKey = snapshot.key as? String{ 

       var likedby = value["Liked By"] as? String 
       let name = value["name"] as? String 
       let age = value["age"] as? String 
       let caption = value["caption"] as? String 
       let picURL = value["photoURL"] as? String 
       let gender = value["gender"] as? String 
       print("TTT") 
       print(name, "was liked by",likedby) 

       if likedby == nil || likedby != "Othman" { 
        print("****") 
        print(name) 

回答

2

A Firebase DataSnapshot只讀。它主要用於回讀之前從Firebase獲取的數據。

您需要使用DatabaseReference.setValue方法代替更新給定節點。如評論中所述,DataSnapshot.ref屬性提供了一種方便的方式來獲取與給定快照對應的DatabaseReference

+1

您可以通過'ref'屬性獲取快照的'FIRDatabaseReference'。請參閱https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/FIRDataSnapshot#ref –

+0

@FrankvanPuffelen好的提示,謝謝!完全忘記了方便的'ref'屬性...... –