2017-07-02 116 views
0

我在Firebase中设置了一些数据对象,我试图在Wwift中检索它们并将它们显示在表格视图中,但我无法获得任何结果。在Swift中从Firebase中检索数据的问题

我试过了吗?

var crystalsList = [Crystal]() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    print(crystalsList.count) 
    crystalRef = Database.database().reference().child("crystalList") 

    crystalRef?.observe(DataEventType.value, with: { (snapshot) in 
     if snapshot.childrenCount > 0 { 
      self.crystalsList.removeAll() 

      for myCrystal in snapshot.children.allObjects as! [DataSnapshot]{ 
       let crystalObject = myCrystal.value as? [String : AnyObject] 
       let name = crystalObject?["name"] 
       let colors = crystalObject?["colors"] 
       let mainColor = crystalObject?["mainColor"] 
       let region = crystalObject?["region"] 
       let rarity = crystalObject?["rarity"] 
       let additionalInfo = crystalObject?["additionalInfo"] 
       let primaryUse = crystalObject?["primaryUse"] 
       let isNew = crystalObject?["isNew"] 

       let theCrystal = Crystal(name: (name as! String?)!, rarity: (rarity as! String?)!, region: (region as! String?)!, color: (colors as! String?)!, mainColor: (mainColor as! String?)!, isNewListing: (isNew as! Bool), additionalInfo: (additionalInfo as! String?)!, primaryUse: (primaryUse as! String?)!) 

       self.crystalsList.append(theCrystal) 
      } 

      self.crystalTable.reloadData() 
     } 
    }) 

} 
+1

此代码不足以排除故障。显示数据库(相关部分)的JSON(作为文本,没有屏幕截图)。单击[Firebase数据库控制台](https://console.firebase.google.com/)中的“导出JSON”项目/ _ /数据库/数据)。在调试器中运行代码并在关键线上设置断点。它进入你的回调块吗?最后:你有权限读取数据:https://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database/24788/detect-errors -when-reading-data-on-ios#t = 201707020102526875005 –

+0

感谢您的回复,我翻阅了您提供的文章,结果显示我没有读取数据的权限,所以我继续修复我现在可以打印这些数据。 – Geniouse

+0

很高兴听到您根据该链接对它进行了排序。我不知道如何解决这个问题,所以投票结束,作为题外话。 –

回答

0

感谢Frank,我能够进入火力点,并允许读取数据的权限来解决此问题。