加载视图iOS之前从Firebase检索数据

时间:2018-07-10 19:20:22

标签: ios swift firebase firebase-realtime-database

我正在开发一个应用程序,其中用户具有特定数量的帖子。为了跟踪用户的帖子数量,FirebaseDatabase中有一个存储该数字的值。

我需要在加载收藏视图之前检索此值。

这是我从Firebase检索此值的方式:

var count = 0

private func retrievePostCount() {

       let userID = Auth.auth().currentUser?.uid

       ref.child("users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
        // Get user value
        let value = snapshot.value as? NSDictionary
        let count = value?["postCount"] as? Int ?? 0
        self.count = count

    }) { (error) in
        print(error.localizedDescription)
    }
}

我在加载视图之前调用此方法。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    retrievePostCount()
}

检索数据后,在分配单元格编号时调用计数。

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return self.count
}

这是数据库的结构。

enter image description here

我认为问题可能在于视图在检索数据之前加载得太快。我该如何解决?

1 个答案:

答案 0 :(得分:1)

设置了从api检索到的$fliesid_in_store = $_REQUEST['fliesid_in_store']; echo $res = preg_replace("/[^a-zA-Z]/", "", $fliesid_in_store); 之后,您需要按以下方式重新加载count,以便从collectionView方法返回新的计数,

numberOfItemsInSection