0
当我第一次问这个问题时,我没有真正完成我的研究。但是在这20多个小时后,我的结构与Firebase文档完全相同。但是,我无法访问闭包之外的任何数据。这里就是数据应该被写入到结构:在关闭之外访问数据Firebase ObserveSingleEvent // SWIFT
struct UserStruct {
let name : String!
let age : String!
}
而当它被调用,一切都写在完美的数据库,它不打印零封里面,它打印的实际值明显。我已经尝试过
DispatchQueue.main.async {
}
但是那也行不通,有人指导我!任何帮助表示赞赏,这是我与Firebase的最后一个问题。
let currentUser = FIRDatabase.database().reference(withPath: "users").child((FIRAuth.auth()!.currentUser?.uid)!)
currentUser.observeSingleEvent(of: .value, with: { snapshot in
let value = snapshot.value as? NSDictionary
let name = value?["name"] as? String
let age = value?["age"] as? String
self.userAdded.insert(UserStruct(name: name, age: age), at: 0) // 1
let user = UserStruct.init(name: name, age: age) // 2
print("1 \(user.name)")
print("2 \(self.userAdded[0].name!)")
})
我写了获取数据的方式有两种,数字二(2)是火力地堡暗示的方式,但我甚至不能得到用户保持外接近像我可以与结构。
目前还不清楚你在问什么。 firebase数据在闭包内有效,所以例如你想填充一个tableView。你观察你想要的节点,然后数据在闭包内返回。你迭代快照并填充一个数组(在闭包之外定义),一旦完成,tableView.reload(仍在闭包内)。从那时起,你的数据被存储在数组中,并可以使用。您根本不需要执行DispatchQueue.main.async。 – Jay