我想检查数据库中的帖子数,并将其作为tableView中的numberOfRows返回。但是,以下代码不起作用。每次返回1。我知道这是因为我在一个闭包中设置了var requestPostCount,但是我不确定如何解决它。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

            var requestPostcount: Int = 1

            if segmentOutlet.selectedSegmentIndex == 0 {

                // This is temporary
                return 1
            }

            else {
                // Query the database to check how many posts are there
                ref.child("Request Posts").observe(.value, with: { (snapshot) in
                    var requestPostCount = Int(snapshot.childrenCount)

                    // If database is empty, only 1 row is needed to display error message
                    if requestPostCount == 0 {
                        requestPostCount = 1
                    }
                })
            }

            return requestPostcount
        }

最佳答案

numberOfRowsInSection是查询数据库的错误位置。

无论如何,该方法将在闭包执行完成之前返回具有默认值的requestPostcount。

您需要找到一个更好的位置来查询数据库,以便在调用numberOfSections时,数据已经可用。

关于ios - 在闭包外返回变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43600205/

10-09 10:10