【发布时间】:2018-03-12 21:51:24
【问题描述】:
我正在尝试将 Firebase 字符串值添加到集合视图中,但它在 cell.statsLabel.text = statData[indexPath.row] -> 线程 1:EXC_BREAKPOINT(代码=1,子代码=0x101ed3b50)上给了我一个错误。我的 Firebase 是正确的(我已将值添加到标签)问题正在附加。它甚至没有通过retrieveUserData 函数!下面的图片链接是我的集合视图的样子,左侧标签是 statHeader 数组,右侧标签是 statData 数组 -> The collectionview image。有什么想法吗?
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
}
}
【问题讨论】:
标签: arrays swift firebase append