У меня возникла проблема при импорте данных из моей базы данных Firestore.
По сути, я использую значение index
, которое было перенесено из табличного представления в предыдущем контроллере представления как indexPath?.row
. Неустранимая ошибка начинается при использовании index
в массиве с ошибкой fatal error: Index out of range
.
Следующий код взят из этого нового перенаправленного View Controller:
import Firebase
class DetailedSubjectsViewController: UIViewController {
var index: Int!
var database: Firestore!
var subjectsArray = [Subjects]()
override func viewDidLoad() {
super.viewDidLoad()
database = Firestore.firestore()
loadData()
let subjects = subjectsArray[index] // fatal error: Index out of range
labelTitle.text = subjects.name
}
func loadData() {
let uid = Auth.auth().currentUser?.uid
database.collection("users").document(uid ?? "").collection("subjects").getDocuments { (querySnapshot, error) in
if let error = error {
fatalError("Fatal error: \(error.localizedDescription)")
} else {
self.subjectsArray = querySnapshot!.documents.compactMap({ Subjects(dictionary: $0.data())})
}
}
}
}
А это код из предыдущего View Controller:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let indexPath = tableviewSubjects.indexPathForSelectedRow
let indexNumber = indexPath?.row
let detailedSubjectsViewController = segue.destination as! DetailedSubjectsViewController
detailedSubjectsViewController.index = indexNumber
}
Есть ли способ исправить эту проблему? Вся помощь приветствуется!