这是从Firebase获取信息的代码。它将更改单元格的imageView图像和标签的文本。运行代码时,所有单元格都具有相同的图像和标签文本。
attr2 = list(map(lambda b:b[2], inputDatasets.values()))
答案 0 :(得分:2)
实际上,对于每个单元格渲染,您都是从Firebase数据库中获取所有用户的。每个呼叫的最后一个呼叫是您多次看到的用户。它会覆盖先前的内容。
要解决您的问题,您可以将用户存储在数组中。
var users = [User]()
要填充此数组,请在viewDidLoad中调用类似的函数
func fetchUsers() {
Database.database().reference().child("users").observeSingleEvent(of: .childAdded) { (snapshot: DataSnapshot) in
if let dict = snapshot.value as? [String : Any] {
let user = User()
//set user properties here
users.append(user)
}
}
}
获取所有用户后,应重新加载collectionView
collectionView.reloadData()
在您的cellForItemAt函数中,您现在可以访问用户
let user = users[indexPath.row]
使用用户变量设置您的单元格
答案 1 :(得分:-1)
要解决此问题,首先您应该从Firebase中以数组形式收集所有数据,然后将该数组用于表视图。