【问题标题】:Realtime update array from Firestore来自 Firestore 的实时更新数组
【发布时间】:2019-02-06 02:10:48
【问题描述】:

我正在尝试从 Firebase Firestore 文档下载信息,然后将其实时附加到数组中。每次我添加文档、删除或编辑文档时,我都希望应用程序更新和同步数组以匹配数据。我能够使用以下代码检索数据:

database.collection("_Products").getDocuments(completion: { (snapshot, error) in
        if error != nil {
            print(error as Any)
        }else{
            for document in (snapshot?.documents)! {
                let Name = document.data()["Item Name"] as! String
                let Price = document.data()["Item Price"] as! String
                let Number = document.data()["Item Number"] as! String
                let Brand = document.data()["Item Brand"] as! String
                let Quantity = document.data()["Quantity"] as! String
                let Category = document.data()["Item Category"] as! String
                DispatchQueue.main.async {
                    if instoreCheckOutArray.contains(where: {$0.Number == Number && $0.Brand == Brand}){
                        return
                    }else{
                        instoreCheckOutArray.append(checkOutArrayInfo(Brand: Brand, Name: Name, Number: Number, Price: Price, Quantity: Quantity, Category: Category))
                        self.searchForCoupon()
                    }
                }
            }
        }
    })

然后我使用以下代码每秒运行一次函数以从数据库中获取数据:

timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCart), userInfo: nil, repeats: true)

运行之前的代码可以完美地获取新数据,但我无法让应用程序更新现有数组以匹配数据库,并且当我从数据库中删除文档时,它仍保留在数组中。

谢谢你。

【问题讨论】:

  • 为什么需要每秒获取数据?您可以使用listener 而不是这就是我们使用Firebase/Firestore 来避免Web 服务轮询的原因。
  • @TheTiger 谢谢!这正是我所需要的,但不知何故我不知道该功能。

标签: swift firebase google-cloud-firestore


【解决方案1】:

1.声明scrollingTimer变量

var scrollingTimer = Timer()

2.用你的函数初始化滚动定时器

scrollingTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCart), userInfo: nil, repeats: true)

3.触发滚动计时器(在任何你想要的地方触发)

scrollingTimer.fire()

要停止滚动计时器,请使用以下行(在您想要的任何地方停止)

scrollingTimer.invalidate()

如果有请参考link(开发者文档)

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 2021-12-03
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多