SwiftUI / Firebase:我可以使用@Published 向 Firebase 数据库发送和接收单个值吗?

Posted

技术标签:

【中文标题】SwiftUI / Firebase:我可以使用@Published 向 Firebase 数据库发送和接收单个值吗?【英文标题】:SwiftUI / Firebase: Can I send and receive a single value to Firebase Database using @Published? 【发布时间】:2021-02-08 15:33:21 【问题描述】:

我想获取当前计数以更新到我的 Firebase。

我正在制作一个基本的计数计数器,我希望它能够跨设备实时更新。

Firebase 身份验证已配置并链接到应用。

  class CurrentCount: ObservableObject 
  @Published var count = 0 

  struct HomeScreen : View 

  @ObservedObject var UserCount = CurrentCount()

  var body: some View 
    ZStack 
      
      VStack 
        
        Button(action: 
          self.UserCount.count -= 1
        ) 
          Image(systemName: "minus")
            .foregroundColor(Color("Color"))
            .scaleEffect(2)
            .padding()
            .frame(minWidth:1000, maxWidth: 1000)
            .frame(minHeight:450, maxHeight: 450)
        
        
          Button(action: 

          ) 
            Text("\(UserCount.count)")
              .foregroundColor(Color("Color"))
              .font(.system(size: 100))
              .padding()
              .onLongPressGesture 
                self.UserCount.count = 0
            
          
        
      
        Button(action: 
          self.UserCount.count += 1
        ) 
          Image(systemName: "plus")
            .foregroundColor(Color("Color"))
            .scaleEffect(2)
            .padding()
            .frame(minWidth:1000, maxWidth: 1000)
            .frame(minHeight:450, maxHeight: 450)
        
      
    
  

Image of View

【问题讨论】:

您是否已经知道如何从 Firebase 发送/接收数据并且只是在寻找与 SwiftUI 的连接,或者您是否还需要与 Firebase 相关的代码? 我对这个过程很熟悉,但我不会说我知道。希望能在正确的方向上得到推动。我的理想结果是为每个操作更新 $count,但我不确定如何触发它。请原谅我的业余词汇。我已经在互联网上搜索过,但是大量的教程非常复杂。 查看这个 Firebase 扩展:它可能正是您所需要的:github.com/firebase/extensions/tree/master/firestore-counter。它也有一个 ios 客户端:github.com/firebase/extensions/blob/master/firestore-counter/… 【参考方案1】:

我认为您最好在您的 ObservableObject 中创建一个从您的按钮调用的辅助函数。在同一个对象中,您可以在 init 中为实时更新设置一个侦听器,以便在任何更改时都收到通知(请注意,如果您的应用程序是唯一更改数据的东西并且您没有在侦听外部来源,您可以避免进行实时更新,而只需在 init 中获取第一个初始值):

class CurrentCount: ObservableObject 
    @Published var count = 0
    
    init() 
        //connect to Firebase here and listen for real-time updates: https://firebase.google.com/docs/database/ios/read-and-write#listen_for_value_events
    
    
    func updateCount(newCount: Int) 
        count = newCount
        //send the value to Firebase here as well
        //https://firebase.google.com/docs/database/ios/read-and-write#basic_write
    

要了解有关在 Firebase 中获取/设置信息的详细信息,

【讨论】:

以上是关于SwiftUI / Firebase:我可以使用@Published 向 Firebase 数据库发送和接收单个值吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 SwiftUI 从 Firebase / Firestore 中删除文档

SwiftUI 在使用 Firebase 单击注销时隐藏 TabView

Firebase 更改权限公共访问 SwiftUI

如何使用 SwiftUI 更新 Firebase 中的集合?

使用 Firebase 的 Swiftui 中未显示数据

Firebase+SwiftUI。无法转换价值