2017-04-07 91 views
-1

我不想使用.value觀察者獲取我的firebase數據,我有一個名爲「object」的對象類,它只有一個名爲「test」的屬性類型爲string的屬性。使用.value觀察者的Firebase提取數據不起作用?

更新:我的對象類

public class object : NSObject{ 

    var test : String! 

} 

這是我的代碼:

import UIKit 
import Firebase 

class ViewController: UIViewController { 
    var ref : FIRDatabaseReference! 
    var objarray = [object]() 



    override func viewDidLoad() { 
     super.viewDidLoad() 
     ref = FIRDatabase.database().reference().child("root") 
     loaddata() 
    } 

    func loaddata(){ 

     ref.observe(.value, with: { (snapshot) in 
      let obj = object() 
      if let data = snapshot.value as? [String : AnyObject]{ 
       obj.setValuesForKeys(data) 
       self.objarray.append(obj) 
       print("%%%%%%% \(obj.test)") 
      } 

     }) 

    } 

} 

當我使用.value的觀測它只是檢索沒什麼!但如果我使用.childAdded數據會被檢索?

有人可以指導我,如果我做錯了什麼?

更新:enter image description here添加火力數據庫圖像

+1

您可以在FireBase中添加數據庫的屏幕截圖嗎? –

+0

我加了屏幕截圖 –

+0

不清楚'對象'是什麼意思......你能否把這個類定義添加到你的問題中?謝謝! –

回答

1

你應該遍歷返回的字典[String : AnyObject]然後創建相應的object實例。

ref.observe(.value) { (snapshot) in 
    if let data = snapshot.value as? [String : AnyObject] { 
     for objectData in data.values { 
      let obj = object() 
      obj.setValuesForKeys(objectData as! [String : AnyObject]) 
      self.objarray.append(obj) 
      print("%%%%%%% \(obj.test)") 
     } 
    } 
}    
+0

謝謝,我錯過了.value觀察者返回的字典,現在它的所有工作 –

+0

一件事情PLZ,我怎麼能得到我的對象的關鍵? –

+0

改爲在數據中使用'for(key,objectData)。 –