嗨我想获得在Firebase数据库中的numOfVids,所以我可以在我的numberOfItemsInSection中返回该数字。但它返回0而不是6.我知道它返回0,因为它读取的是空变量,而不是observeSingleEvent中的变量。如何在swift 3中得到这个变量的编号?
有什么办法让我获得修改的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'中加载数据,并在观察方法的完成处理程序中重新加载集合视图。 – vadian
确切地说,在UICollectionViewDataSource的方法中做这个工作是不好的方法。 – Malder