【问题标题】:Getting duplicate Firestore documents on Tableview (Swaft)在 Tableview (Swaft) 上获取重复的 Firestore 文档
【发布时间】:2021-06-08 03:03:27
【问题描述】:

即使在先清空我的数组后,我仍然得到重复的结果,有人可以解释为什么会发生这种情况我试图在许多不同的地方清空这个数组DriverOffers,但仍然得到相同的结果,重复的 tableView 单元格无处不在。

func newOrders(){

        //self.DriverOffers = [] here same result

        let fireStore = Firestore.firestore()
        let doc = fireStore.collection("الطلبات")
        
        doc.addSnapshotListener { (query, err) in
            if err != nil {
                print(err?.localizedDescription ?? "")
            }

            //self.DriverOffers = []

            query?.documentChanges.forEach({ (change) in
                
            //self.DriverOffers = []

                switch change.type{
                case .added:

               for document in query!.documents{
                        
                    self.DriverOffers = []

                    let snap = document.data()

                    let name = snap["name"] as? String ?? ""
                    let phone = snap["phone"] as? String ?? ""
                    let time = snap["time"] as? String ?? ""
                    let marketName = snap["marketName"] as? String ?? "موقع محدد"
                    let price = snap["amount"] as? String ?? ""

                    DispatchQueue.main.async {

                    //self.DriverOffers = []

                    let offer = driverOrdersData(userUid: userid, name: name, phone: phone, amount: price)

                     self.DriverOffers.append(offer)
                     self.DriverOrdersTV.reloadData()
                                    
                  }
           }
}
                     case .removed:
                          print("removed")

                     case .modified:
                           break
                    
                }
            })
                    
        
    }

【问题讨论】:

  • 表格视图单元格数是否等于没有重复的数组项数?
  • 是的 return DriverOffers.count
  • 然后检查表格视图单元格中的 prepareForReuse() 方法。将 nil 分配给所有 UI 对象(nameLabel.text = nil)
  • 你能给我一些代码吗?我之前没有处理过prepareForReuse(),当然不知道你在说什么

标签: arrays swift firebase uitableview google-cloud-firestore


【解决方案1】:

在tableViewCell中使用这个方法并检查。

override func prepareForReuse() {
        super.prepareForReuse()
        self.nameLabel.text = nil
    }

【讨论】:

  • 那个答案与我的代码无关
猜你喜欢
  • 2018-07-07
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多