为什么我的数组不存储我从firebase数据库中检索的值?

时间:2017-05-05 10:55:41

标签: ios arrays swift firebase

所以我在类级别声明我的用户数组,这是非常好的,并存储我放入其中的任何值,除非我从我的firebase数据库中检索它....我一直在努力解决这个问题,我唯一的错误就是似乎链接到这可能是。

由于模拟器错误而退回到从NSUserDefaults加载访问令牌

我的数组一直在告诉我它因为一些奇怪的原因而空了......

我该如何解决这个问题?

var allUsers = [User]()

func retrieveUsers() {
    let ref = FIRDatabase.database().reference()
    ref.child("users").queryOrderedByKey().observeSingleEvent(of: .value, with: { snapshot in

        let users = snapshot.value as! [String : AnyObject]
        self.allUsers.removeAll()
        for (_, value) in users {

            if let uid = value["uid"] as? String {
                if uid != FIRAuth.auth()!.currentUser!.uid {
                    if let name = value["name"] as? String, let age = value["birthdate"] as? String {
                        let calculatedAge = self.calcAge(birthdate: age)

                        let userToShow = User(name: name,age: calculatedAge)
                        print(userToShow.Name)
                        self.allUsers.append(userToShow)

                    }

                    }
                }
            }
        })
    print(allUsers.count)
    ref.removeAllObservers()


}

提前致谢!!

1 个答案:

答案 0 :(得分:0)

异步数据检索:-)你看到'userToShow.Name'打印出来了吗?您在数据检索完成之前打印计数 - 尝试将其放入完成处理程序