【发布时间】:2021-09-09 07:39:15
【问题描述】:
我一直在寻找有关在 SwiftUI 中使用实时数据库的文档,但我发现的只是有关使用 Firestore 的信息或使用 UIKit 的旧信息。是否有任何关于如何通过基本示例从数据库中读取的信息?
【问题讨论】:
标签: ios firebase firebase-realtime-database swiftui
我一直在寻找有关在 SwiftUI 中使用实时数据库的文档,但我发现的只是有关使用 Firestore 的信息或使用 UIKit 的旧信息。是否有任何关于如何通过基本示例从数据库中读取的信息?
【问题讨论】:
标签: ios firebase firebase-realtime-database swiftui
SwiftUI 是一种快速生成应用程序的方法,但在处理用户数据时,没有预构建的解决方案,因为每个项目都是独一无二且不同的。相反,您将在页面上引入代码,这些代码会加载相应应用页面所需的数据。
Firebase 获取数据一次的示例:
self.ref.child("users/\(user.uid)/username").getData { (error, snapshot) in
if let error = error {
print("Error getting data \(error)")
}
else if snapshot.exists() {
print("Got data \(snapshot.value!)")
}
else {
print("No data available")
}
}
您可以在此处找到 iOS 文档:https://firebase.google.com/docs/database/ios/read-and-write
这里是关于如何为 SwiftUI 和 Firebase Realtime 制作应用程序的快速指南: https://medium.com/flawless-app-stories/how-to-build-a-firebase-app-with-swiftui-5919d2d8a396
【讨论】:
一般来说,在 SwiftUI 中,将像 Firebase 这样的网络/异步代码放入 View 可以访问的 ObservableObject 是很有帮助的。然后,您可以使用像 onAppear 这样的触发器来运行您的 Firebase 函数。然后,当您的 ObservableObject 上的 @Published 属性发生更改时,您的视图将自动重新渲染。
例如:
class FirebaseManager : ObservableObject {
@Published var result : String?
func makeFirebaseCall() {
//make your Firebase data call here -- plenty of examples exist on how to do this, which is not SwiftUI or UIKit specific. When the Firebase call returns, set the returned value to your @Published property.
self.result = //the result of my firebase call
}
}
}
struct ContentView : View {
@StateObject private var firebaseManager = FirebaseManager()
var body : some View {
VStack {
Text("Hello, world")
if let result = firebaseManager.result {
Text(result)
}
}.onAppear {
firebaseManager.makeFirebaseCall()
}
}
}
【讨论】: