嗨我想獲得在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