Firebaseの文字列値をコレクションビューに追加しようとしましたが、cell.statsLabel.text = statData[indexPath.row]
- >スレッド1:EXC_BREAKPOINT(コード= 1、サブコード= 0x101ed3b50)でエラーが発生しています。問題が追加されている私のFirebaseが正しい(私はラベルに値を加えた)。それはretrieveUserData関数を経由しません!以下の画像リンクは、左のラベルがstatHeader配列で、右のラベルがstatData配列 - >The collectionview imageで、コレクションビューがどのように表示されるかを示しています。何か案は?コレクションビューにfirebase文字列値を追加しようとしています
class SceneTwoViewController: UIViewController, GADRewardBasedVideoAdDelegate, UIAlertViewDelegate, UICollectionViewDelegate, UICollectionViewDataSource {
var statHeaders:[String] = []
var statData:[String] = []
var ref: FIRDatabaseReference?
var databaseHandle: FIRDatabaseHandle?
var streakCheck = ""
@IBOutlet var statsCollectionView: UICollectionView!
@IBOutlet var entireView: UIView!
@IBOutlet var activityIndicator: UIActivityIndicatorView!
@IBOutlet var ovImage: UIImageView!
@IBOutlet var Watchbtn: UIButton!
@IBOutlet var StreakImage: UIImageView!
@IBOutlet var StatusLabel: UILabel!
@IBOutlet var TimeDisplay: UIImageView!
@IBOutlet var statusCheck: UILabel!
@IBOutlet var nameLabel: UILabel!
func retrieveUserData() {
let user = FIRAuth.auth()?.currentUser?.uid
ref?.child("users").child(user!).observeSingleEvent(of: .value, with: { snapshot in
print("Dan2")
let value = snapshot.value as? NSDictionary
let statret = value?["status"] as? String ?? ""
let streakret = value?["streakNumber"] as? String ?? ""
let placesret = value?["placesHelped"] as? String ?? ""
self.statData.append(statret)
self.statData.append(streakret)
self.statData.append(placesret)
})
}
override func viewDidLoad() {
super.viewDidLoad()
self.ref = FIRDatabase.database().reference()
let user = FIRAuth.auth()?.currentUser?.uid
print("WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW")
retrieveUserData()
statHeaders.append("Status: ")
statHeaders.append("Streak: ")
statHeaders.append("Places Helped: ")
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return statHeaders.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "statsCell", for: indexPath) as! statsCollectionViewCell //statsCollectionViewCell is name of external file with labels
print(statData.count) // prints 0
print(statHeaders.count) // prints 3
cell.headerLabel.text = statHeaders[indexPath.row]
cell.statsLabel.text = statData[indexPath.row]
return cell
}
}
これは完璧な答えです、どうもありがとう、私は数週間のためにこれを見てきました!最後にリロードを追加し、statData.count> indexPath.row { cell.statsLabel.text = statData [indexPath.row] }を追加しました。 – DannyV