Я создал представление с табличным представлением, чтобы показать членов группы. У этой группы также есть участники. Эти члены также перечислены в массиве, называемом admins. Я получаю данные для этого табличного представления следующим образом:
func getGroupData(){
self.admins.removeAll()
self.members.removeAll()
self.tableView.reloadData()
let db = Firestore.firestore()
let docRef = db.collection("Groups").document(groupId)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
let url = URL(string: document.get("imageUrl") as! String)
self.groupthumb.kf.setImage(with: url)
if let admin = document.get("admins") as? [String] {
self.admins = admin
}
if self.admins.contains(Auth.auth().currentUser!.uid){
self.addUser.isHidden = false
}else{
self.addUser.isHidden = true
}
if let user = document.get("members") as? [String]{
let userids = user
self.memberslabel.text = "Mitglieder (\(userids.count))"
self.getUserDetails(userids: userids, admins: self.admins)
}
self.labelGroupName.text = document.get("name") as! String
if document.get("publicGroup") as! Bool{
self.isGroupLocked.image = UIImage(named: "baseline_lock_open_black_24pt")
}else{
self.isGroupLocked.image = UIImage(named: "baseline_lock_black_24pt")
}
} else {
print("Document does not exist")
}
}
}
func getUserDetails(userids: [String], admins: [String]){
let db = Firestore.firestore()
for userid in userids{
let docRef = db.collection("Users").document(userid)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
let userObject = UserObject.init()
if let name = document.get("name") as? String{
userObject.name = name
userObject.imageUrl = document.get("imageUrl") as! String
}
userObject.id = document.documentID
if admins.contains(document.documentID){
userObject.isAdmin = true
}else{
userObject.isAdmin = false
}
self.members.append(userObject)
self.tableView.reloadData()
} else {
print("Document does not exist")
}
}
}
}
И это моя ячейка для строки в методе:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "groupemberscell", for: indexPath) as! GroupDetailTableViewCell
let object = members[indexPath.row]
cell.userthumb.layer.masksToBounds = false
cell.userthumb.layer.cornerRadius = cell.userthumb.frame.height/2
cell.userthumb.clipsToBounds = true
cell.username.text = object.name
if let imageUrl = object.imageUrl as? String{
let url = URL(string: object.imageUrl!)
cell.userthumb.kf.setImage(with: url)
}
if object.isAdmin!{
cell.admin.text = "Admin"
cell.admin.textColor = UIColor(hex: "#009688")
cell.admin.layer.borderColor = UIColor(hex: "#009688").cgColor
cell.admin.layer.cornerRadius = 5
}else{
cell.admin.isHidden = true
}
return cell
}
Проблема в том, что, например, позиция 0 - это администратор , он показывает значение в первый раз, но если прокручиваю, метка администратора отображается в позиции 1, а не в 0, как должно. Похоже, что здесь странная ошибка, потому что имя или изображение профиля не имеют этой ошибки.