Я пытаюсь создать функцию, при которой, когда пользователь щелкает конкретную ячейку в моем UITableView, проект переходит к новому ViewController и отображает всю информацию, которая была сохранена в CoreData. Проблема в том, что, когда я касаюсь ячейки, я получаю ошибку
Unexpected nil while unwrapping optional value
Вот мой код в том виде, в котором он находится сейчас в ViewController, который имеет TableView
class ContactViewController: UIViewController, UITableViewDataSource, NSFetchedResultsControllerDelegate, UITableViewDelegate {
var selectName:String?
var selectPhone:String?
var selectComment:String?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectName = contact[indexPath.row].name
selectPhone = contact[indexPath.row].phone
selectComment = contact[indexPath.row].comments
performSegue(withIdentifier: "MySegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "MySegue"{
if let destVC = segue.destination as? IndiViewController {
destVC.NameLabel = selectName
destVC.PhoneLabel = selectPhone
destVC.CommentLabel = selectComment
}
}
}
Это мой код в IndiViewController (ВК, в котором я хочу, чтобы пользователь просмотрел контакт)
class IndiViewController: UIViewController {
@IBOutlet var NameLabel: UILabel!
@IBOutlet var PhoneLabel: UILabel!
@IBOutlet var CommentsLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}
Я пробовал несколько других методов, но все они выдавали ту же ошибку
Я немного исправил проблему, чтобы увидеть, какая переменная действительно вызывала ноль, выполнив это:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "MySegue"{
if let destVC = segue.destination as? IndiViewController {
destVC.NameLabel = "selectName" //I thought if perhaps the nil was the var selectName this would at least let me know
}
}
Однако даже через это приложение вылетает и выдает ту же ошибку. Поэтому я думаю, что проблема связана с метками в IndiViewController.
Поэтому я попытался создать пустую строку и присвоить ее NameLabel следующим образом:
class IndiViewController: UIViewController {
@IBOutlet var NameLabel: UILabel!
var name = ""
override func viewDidLoad() {
super.viewDidLoad()
NameLabel.text = name
}
}
но все равно не повезло.
Что я делаю не так?