Я работаю над приложением посещаемости, которое загружает и хранит все свои данные в базе данных Firebase.Большинство вещей в настоящее время работают, за исключением того, что иногда, когда в массиве студентов в клубе нажимается переключатель, 2 из переключателей активируются в массиве, но информация, обычно отправляемая при нажатии переключателя, отправляется только для переключателя, который я фактически нажал.
Вот код ячейки TableView:
import UIKit
import Firebase
class StudentCell: UITableViewCell {
var student: Student? { didSet { self.updateUI() }}
@IBOutlet weak var lblStudentName: UILabel!
@IBOutlet weak var lblStudentId: UILabel!
@IBOutlet weak var lblStudentAttending: UISwitch!
let ref = Database.database().reference()
var user: Student! {
didSet{
lblStudentName.text = user.FullName()
lblStudentId.text = user.StudentId
lblStudentAttending.isOn = false
}
}
var switchReference: DatabaseReference?
var switchHandle: DatabaseHandle?
func stopObservation() {
if let handle = switchHandle {
switchReference?.removeObserver(withHandle: handle)
}
}
func startObservation() {
stopObservation()
if let uid = student?.StudentId {
switchReference = ref.child("attendance").child(Global.shared.currentDate).child(uid)
switchReference?.observe(.value, with: { [weak self] (snapshot: DataSnapshot) in
DispatchQueue.main.async {
let isOn = (snapshot.value as? Bool) ?? false
self?.lblStudentAttending.isOn = isOn
}
})
}
}
func updateUI() {
startObservation()
self.lblStudentName.text = self.student?.FullName() ?? ""
self.lblStudentId.text = self.student?.StudentId ?? ""
}
@IBAction func `switch`(_ sender: UISwitch) {
switchReference?.setValue(sender.isOn)
}
}
Кто-нибудь знает, почему это может происходить?Если вам нужно больше информации, ЛМК.TIA -Ben