2017-04-07 92 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)。 –