【发布时间】:2016-12-02 02:39:15
【问题描述】:
如何在闭包之外访问“用户”?
let currentUser = FIRDatabase.database().reference(withPath: "users").child((FIRAuth.auth()!.currentUser?.uid)!)
currentUser.observeSingleEvent(of: FIRDataEventType.value, with: { snapshot in
let value = snapshot.value as? NSDictionary
let name = value?["name"] as? String
let age = value?["age"] as? String
let user = UserStruct.init(name: name, age: age)
})
Firebase 中的一切都是正确的,并且数据存在且不为零。但我需要像这样在闭包之外引用“用户”:
print(user.name)
print(user.age)
【问题讨论】:
-
您需要在闭包范围之外定义用户,并将其填充到闭包中,然后在使用用户之前等待闭包完成,或者您可以使用完成处理程序
-
什么声明用户在范围之外,因为它正在接受一个结构?一本字典?我尝试使用完成处理程序,但我不应该放置它。
-
好吧
User是UserStruct,所以就这样声明吧。 -
好吧,我试了一下,var user = [UserStruct](),然后改成这个,self.user = [UserStruct.init(name: name, age: age)],然后参考就像这样,打印(用户[0].name)。但我的致命错误索引超出范围
-
来自我的第一条评论:“然后等待关闭完成后再使用用户”