Когда я впервые задал этот вопрос, я действительно не сделал свое исследование. Но через 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 предполагает, но я даже не могу ухватить пользователей за пределами ближе, как я могу с Struct.
Непонятно, что вы просите. Данные firebase действительны в закрытии, поэтому, например, вы хотите заполнить таблицуView. Вы наблюдаете нужный вам узел, затем данные возвращаются внутри закрытия. Вы перебираете снимок и заполняете массив (который определен за пределами закрытия), и как только это будет сделано, tableView.reload (все еще внутри закрытия). С этого момента данные хранятся в массиве и с ними можно работать. Вам вообще не нужно делать DispatchQueue.main.async. – Jay