struct UserClass {
    var babyName: String!
    var babyHeight: String!
    var babyWeight: String!
    var babyURL: String!

    var uid: String!
    var reference:DatabaseReference!
    var key: String!

    init?(snapshot: DataSnapshot?) {
        guard let value = snapshot?.value as? [String:AnyObject],

            let uid = value["uid"] as? String,
            let babyName = value["BabyName"] as? String,
            let babyURL = value["BabyURL"] as? String,
            let babyHeight = value["BabyHeight"] as? String,
            let babyWeight = value["BabyWeight"] as? String else {
                return nil
        }

        self.key = snapshot?.key
        self.reference = snapshot?.ref
        self.uid = uid

        self.babyURL = babyURL
        self.babyName = babyName
        self.babyHeight = babyHeight
        self.babyWeight = babyWeight
    }

    func getuserData() -> String {
        return ("BabyName =  \(babyName)")
    }
}

func fetchCurrentUserInfo() {
        var currentUserRef = Database.database().reference().child("Users").child("\(userID)")
        handler = currentUserRef.queryOrderedByKey().observe(DataEventType.value, with: { (snapshot) in
            print("User data = \(snapshot.value)")

            let user = UserClass(snapshot: snapshot)
            print(user?.babyName)
            self.babyName.text = user?.babyName
       })
   }

我得到的是user数据,但不是user.babyName。我该怎么解决?

最佳答案

可能这会帮助你,因为数据库结构没有提到的问题。但您必须逐个迭代子项,然后使用for循环从firebase获取准确的数据。

reference = FIRDatabase.database().reference()
reference.child("Users").queryOrderedByKey().observe(DataEventType.value, with: { (snapshot) in
    if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
        for snap in snapshots
        {
            let userId = child.childSnapshot(forPath: "userID").value! as! String
            print(userId)
        }
    }
})

10-05 20:48
查看更多