【发布时间】:2018-01-13 07:57:45
【问题描述】:
您好,我正在尝试在 Firebase db 中获取 numOfVids,以便可以在我的 numberOfItemsInSection 中返回该数字。但它返回 0 而不是 6。我知道它返回 0 因为它正在读取空变量而不是 observeSingleEvent 中的变量。
有什么方法可以让我获得修改后的 numOfVids 而不是 为空 numOfVids?
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
var numOfVids = Int() // 0
let videosRef = FIRDatabase.database().reference().child("users/\(currentUserID)/videos")
videosRef.observeSingleEvent(of: .value, with: { (snapshot) in
//get user value
numOfVids = Int(snapshot.childrenCount)
print(numOfVids) //prints 6
})
return numOfVids //returns 0
}
提前谢谢你!
【问题讨论】:
-
永远不要将异步任务放入应该返回某些内容的方法中。它行不通。寻找另一个解决方案。例如使用数据源模型,加载
viewWillAppear中的数据,并在观察方法的完成处理程序中重新加载集合视图。 -
没错,在 UICollectionViewDataSource 的方法中做这项工作是不好的方法。
标签: swift xcode firebase uicollectionview