将数据从Firebase加载到标签?

时间:2018-10-19 03:20:20

标签: swift firebase firebase-realtime-database

我在firebase中有一些数据,希望通过Swift加载到UILabel中。

我的数据结构如下:

like-1bf89addclose
 artists
 -LP6zVO8iekRMMOWe7nm
 artistGenre: pop
 artistName: postmalone
 id: 920930

我的快捷代码如下:

override func viewDidLoad() {
    super.viewDidLoad()

   ref = FIRDatabase.database().reference()
    refHandle = ref.observe(FIRDataEventType.value, with: {(snapshot) in
        let dataDict = snapshot.value as! [String: AnyObject]

        print(dataDict)

    })

    ref.child("artists").observeSingleEventOfType(.value, with: {(snapshot) in
        let artist = snapshot.value!["artistName"] as! String
        let genre = snapshot.value!["artistGenre"] as! String

        self.artistlLabel.text = artist
        self.genreLabel.text = genre

    })
}

我的错误在哪里?我尝试过在线搜索,但是大多数示例仅说明如何将输入放入表格视图,该表格具有我尝试理解和重组的其他代码,但无法实现。我知道我的裁判肯定有问题,但我无法弄清楚。

我正在关注一个YouTube教程,并且可以正常工作:

let userID: String = (FIRAuth.auth()?.currentUser?.uid)!
ref.child("Users").child(userID).observeSingleEventOfType(.value, with: {(snapshot) in
    let email = snapshot.value!["Email"] as! String
    let password = snapshot.value!["Password"] as! String

    self.emailLabel.text = email
    self.passwordLabel.text = password

})

**带有此代码的问题是我不需要身份验证部分(没有用户必须登录我的应用程序,他们只是在输入信息)。

1 个答案:

答案 0 :(得分:0)

您在参考文献中缺少-LP6zVO8iekRMMOWe7nm级别。试试这个:

ref.child("artists/-LP6zVO8iekRMMOWe7nm").observeSingleEventOfType(.value, with: {(snapshot) in
    let artist = snapshot.value!["artistName"] as! String
    let genre = snapshot.value!["artistGenre"] as! String
    print("\(artist) \(genre)")

    self.artistlLabel.text = artist
    self.genreLabel.text = genre
})

如果要加载所有艺术家,则可以加载/artists,然后遍历结果:

ref.child("artists/-LP6zVO8iekRMMOWe7nm").observeSingleEventOfType(.value, with: {(snapshot) in
  for child in snapshot.children.allObjects as! [DataSnapshot] {
    let artist = child.value!["artistName"] as! String
    let genre = child.value!["artistGenre"] as! String
    print("\(artist) \(genre)")
  }
})