【问题标题】:load only new data from Firestore collection仅从 Firestore 集合中加载新数据
【发布时间】:2021-05-06 00:47:52
【问题描述】:

我有一个 tableViewController 并且它从 Firestore 获取数据,我在这个 tableView 中有一个 refreshController 我想要从 Firestore 重新加载新数据,如果 Firestore 中有新数据并且用户刷新 tableView 我想要检索的新数据(仅)不是所有的数据。我尝试使用 reloadData() 但它重新加载所有数据并在 tableView 中再次添加它

这是我的代码

import UIKit
import FirebaseFirestore
import Firebase
import FirebaseAuth
import UserNotifications


class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {


@IBOutlet var tableView: UITableView!
   


var db: Firestore!
var street = [String]()
var firstName = [String]()
var lastName = [String]()
var blockNumber = [String]()
var phone = [String]()
var reciept = [String]()
var houseNumber = [String]()
var price = [String]()
var amount = [String]()
var block = [String]()
var Area = [String]()
var names = [String]()
var refreshControl = UIRefreshControl()

override func viewDidLoad() {
    super.viewDidLoad()
    
    

    refreshControl.attributedTitle = NSAttributedString(string: "")
      refreshControl.addTarget(self, action: #selector(self.refresh(_:)), for: .valueChanged)
      tableView.addSubview(refreshControl) // not required when using UITableViewController

    
    tableView.register(UINib(nibName: "TableViewCell", bundle: nil) , forCellReuseIdentifier: "Cell")
    
    tableView.separatorStyle = .none
    tableView.dataSource = self
    tableView.delegate = self
    
    db = Firestore.firestore()
    self.navigationItem.setHidesBackButton(true, animated: true)
    

    NotificationCenter.default.addObserver(self, selector: #selector(setter: tableView), name: NSNotification.Name(rawValue: "notificationName"), object: nil)
    

}


   @objc func refresh(_ sender: AnyObject) {
      tableView.reloadData()
      refreshControl.endRefreshing()

     
  }



func loadData1() {
   
    
    Firestore.firestore().collection("hola").getDocuments() { [self]
            
            (querySnapshot, err) in
            
            if let err = err
            
            {
                print("Error getting documents: \(err)");
            }
            else
            {
                
                var count = 0
                for document in querySnapshot!.documents {
                    count += 1
                    print("\(document.documentID) => \(document.data())");
                    
                    self.firstName.append(document.get("firstname") as? String ?? "")
                    self.lastName.append(document.get("lastname") as? String ?? "")
                    self.street.append(document.get("street") as? String ?? "")
                    self.blockNumber.append(document.get("blockNumber") as? String ?? "")
                    self.Area.append(document.get("area") as? String ?? "")
                    self.phone.append(document.get("phone") as? String ?? "")
                    self.reciept.append(document.get("reciept") as? String ?? "")
                    self.houseNumber.append(document.get("houseNumber") as? String ?? "")
                    self.price.append(document.get("total price") as? String ?? "")
                    self.amount.append(document.get("amount") as? String ?? "")
                    
                }
             
                
            }
            
             self.tableView.reloadData()
            
        }
        
        
  } 

【问题讨论】:

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


    【解决方案1】:

    我认为这个想法是在您的 Firestore 文档中使用时间戳,并查询时间戳值大于您提取的最后一条记录的所有文档。如果需要,您可以将时间戳存储在 UserDefaults 中。

    【讨论】:

    • 有教程如何使用吗?
    • 我认为你他们有很好的文档和视频Firebase Firestore
    猜你喜欢
    • 2020-09-12
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多