Это несколько общий ответ c, так как мы только собираемся обновить элемент пользовательского интерфейса на основе значения, считанного из Firebase.
Firebase является асинхронным, и значения действительны только после функции Firebase, внутри замыкания.
Предположим, у нас есть простое приложение SwiftUI, которое отображает объект Text, кнопку, которую нужно щелкнуть, чтобы загрузить данные из Firebase, а затем переменную, содержащую текст, который должен быть.
struct ContentView: View {
@State var buttonText = "Initial Button Label"
var body: some View {
VStack {
Text(buttonText)
Button(action: {
self.readFirebase()
}) {
Text("Click Me!")
}
}
}
func readFirebase() {
let ref = my_firebase_ref
let textRef = ref.child("string_node")
textRef.observeSingleEvent(of: .value, with: { snapshot in
let myText = snapshot.value as? String ?? "No String"
self.buttonText = myText
})
}
}
Вот моя структура Firebase
root
string_node: "Hello, World"