首页 > 解决方案 > 从 ChildbyAutoID Swift 中检索 Firebase 数据

问题描述

我正在使用以下代码将数据快速保存到实时 firebase 数据库:

guard let key = dbreference.child(("user-clients")).childByAutoId().key else { return }
let post = ["uid": userID,
            "firstname": clientfirstname,
            "lastname": clientlastname,
            "dateofbirth": clientdateofbirth,
            "haircolour": clienthaircolour,
            "products": clientproduct]

let childUpdates = ["/user-clients/\(String(describing: user))/\(key)/": post]
dbreference.updateChildValues(childUpdates)

这会自动在登录的用户下创建一个子 ID(我的理解是这样吗?),并且它工作正常,因为我的数据库正在正确更新。

问题是 - 我正在尝试读取每个人的名字和姓氏并显示在表格视图中(如联系人卡片),但我无法“拉出”firstnamelastname数据。

这是我检索数据的代码:

let dbref = Database.database().reference()
let me: String = (Auth.auth().currentUser?.uid)!
let key = dbreference.child(("users")).childByAutoId().key

//Access the databse and retrieve First and Last Names from child
dbref.child("user-clients").queryOrdered(byChild: me).observeSingleEvent(of: DataEventType.value) { (snapshot) in
    if snapshot.exists() {
        print("exists")
        for child in snapshot.children {
            let data = child as! DataSnapshot
            //print(data.key)
            print(data.value!)
            if (data as AnyObject).hasChild("firstname") {
                print("perfect")
            } else {
                print("does not exist")
            }
            if let firstname = snapshot.childSnapshot(forPath:"firstname").value as? String {
                print(firstname)
            }
            if let lastname = snapshot.childSnapshot(forPath:"lastname").value as? String {
                print(lastname)
            }
        }
    }

控制台打印出不同自动生成的 ID 下的所有联系人时,似乎我并没有降到另一个层次。我的 JSON 文件如下所示:


{
  "user-clients" : {
    "Optional(\"4WNCGOaiIMTKAa12Pmi26w11hSb2\")" : {
      "-M943knUA5JkpMuxygti" : {
        "dateofbirth" : "7777",
        "firstname" : "john",
        "haircolour" : "blue",
        "lastname" : "melon",
        "products" : "09876543321",
        "uid" : "4WNCGOaiIMTKAa12Pmi26w11hSb2"
      },
      "-M944HmLvM50rEc4qtM3" : {
        "dateofbirth" : "12/12/12",
        "firstname" : "basil",
        "haircolour" : "yellow",
        "lastname" : "brush",
        "products" : "678990099",
        "uid" : "4WNCGOaiIMTKAa12Pmi26w11hSb2"
      },
      "-M94C9yk7q6mQglQiaoR" : {
        "dateofbirth" : "12/12/77",
        "firstname" : "Homer",
        "haircolour" : "yellow",
        "lastname" : "Simpson",
        "products" : "123456789",
        "uid" : "4WNCGOaiIMTKAa12Pmi26w11hSb2"
      },
      "-M94CISM865qWAa8nbK-" : {
        "dateofbirth" : "12/11/77",
        "firstname" : "Marge",
        "haircolour" : "Blue",
        "lastname" : "Simpson",
        "products" : "09876654433",
        "uid" : "4WNCGOaiIMTKAa12Pmi26w11hSb2"
      }

任何帮助将不胜感激,我希望以上内容有意义。提前致谢。

标签: iosswiftdatabasefirebasetableview

解决方案


推荐阅读