【问题标题】:Read data from Realtime Database from Firebase in SwiftUI在 SwiftUI 中从 Firebase 读取实时数据库中的数据
【发布时间】:2021-09-09 07:39:15
【问题描述】:

我一直在寻找有关在 SwiftUI 中使用实时数据库的文档,但我发现的只是有关使用 Firestore 的信息或使用 UIKit 的旧信息。是否有任何关于如何通过基本示例从数据库中读取的信息?

【问题讨论】:

    标签: ios firebase firebase-realtime-database swiftui


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      一般来说,在 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()
          }
        } 
      }
      

      【讨论】:

        猜你喜欢
        • 2021-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-07
        • 2023-02-23
        • 2021-09-13
        • 1970-01-01
        相关资源
        最近更新 更多