У меня странная проблема в Swift.
Это связано с другими вопросами о передаче данных между контроллерами представления, однако здесь различие состоит в том, что это предназначено для передачи простого объекта, загруженного из метода didSelectRowAt.
Я передаю данные из контроллера табличного представления, когда выбрана строка.Данные передаются как объект, и я могу распечатать данные и увидеть их в совете, НО, когда я пытаюсь присвоить значения из них, я получаю страшное: «Неожиданно найден ноль при неявном развертывании необязательного значения».Не уверен, что мне здесь не хватает!
Из контроллера табличного представления A:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "existingStudentSegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! StudentDetailTableViewController
if let indexPath = tableView.indexPathForSelectedRow {
destinationVC.selectedStudent = studentsArray?[indexPath.row]
}
}
Получено контроллером табличного представления B:
var selectedStudent: Students? {
didSet {
print("DATA RECEIVED: \(String(describing: selectedStudent))")
print("DATA TYPE: \ (type(of: selectedStudent))")
firstNameText.text = selectedStudent?.firstName
}
}
Оператор printпоказывает введенные мной тестовые данные, а «тип» отображает настройку класса «Ученики» I следующим образом.
DATA RECEIVED: Optional(Students {created = 2019-09-24 12:07:23 +0000; name = Anna Altitude; ...(it's all here)
DATA TYPE: Optional<Students>
Код не выполняется, когда я пытаюсь отобразить текст в текстовом поле в контроллере табличного представления B.Я вижу в стеке вызовов, данные для selectedStudent пустые.но как это может быть?Объект заселен и доступен.