数据更改时快速加载Firebase数据库数据

时间:2019-04-15 02:54:58

标签: swift firebase firebase-realtime-database

我设置了一个tableview,以获取我的firebase数据库信息,如下所示。如何设置侦听器以查找任何新的数据库更改?目前,在查看表视图时,我可以向数据库中添加一个新项目,但是直到我再次重新加载该视图时,在表视图中才能看到更改。

var markets: [loadMyData] = []
    var marketSelectedText = ""
    var myKey = [Any]()


    override func viewDidLoad() {
        super.viewDidLoad()


        ref.child("Markets").observeSingleEvent(of: .value, with: { (snapshot) in

            guard snapshot.exists() else
            {
                print("Null Markets")
                return
            }

            let allMarkets = (snapshot.value as! NSMutableDictionary).allKeys
            self.myKey = allMarkets
            self.tableView.reloadData()
            print(self.myKey, " This is the printing of my key")
        })

        ref.child("Markets").observe(.value, with: { snapshot in
            print(snapshot.value as Any, " ref.observe")
            self.tableView.reloadData()
        })



    }

2 个答案:

答案 0 :(得分:0)

现在您正在使用:

ref.child("Markets").observeSingleEvent(of: .value,

这会观察Markets下的当前数据,然后停止观察。

如果要同时获取当前数据和所有更改,请使用observe(DataEventType.value

答案 1 :(得分:0)

Firebase提供了侦听器来观察数据库的变化,请查看firebase文档https://firebase.google.com/docs/database/ios/lists-of-data

  • FIRDataEventTypeChildChanged 这是监听数据库更改的事件

    commentsRef.observe(.childChanged,其中:{(快照)in

    //在这里,您将在snapshot.value中获得更改的节点值

    })