Swift EXC_BREAKPOINT при назначении viewcontroller переменной в prepareForSegue
Я получаю сообщение об ошибке при попытке выполнить назначение переменной с помощью моего destinationViewController.
Это сообщение об ошибке:
Тема 1: EXC_BREAKPOINT (код = EXC_I386_BPT, субкод = 0x0)
Это в моей функции prepareForSegue.
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if segue.identifier == "LoginSegue"{
let vc = segue.destinationViewController as LoggedInViewController
vc.email = emailTextfield.text
}
}
В другом файле это выглядит так.
var email: String?
который находится наверху.
Тогда это:
override func viewDidLoad() {
super.viewDidLoad()
println("Email is:")
println(email)
println("Email was")
}
Но я никогда не попадаю во второй файл.
Это строка let vc = segue.destinationViewController как LoggedInViewController, помеченная с ошибкой.
Оба быстрых файла подключены к навигационным контроллерам.
Я не знаю, что вам больше нужно, но я, конечно, отправлю код, который вам нужно понять!
Спасибо!
Ответы
Ответ 1
В вашем случае контроллер назначения - это контроллер навигации, а не ваш LoggedInViewController, поэтому segue.destinationViewController as LoggedInViewController
- ошибка, поэтому она сбой.
Попробуйте это
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if segue.identifier == "LoginSegue"{
let navigationController = segue.destinationViewController as UINavigationController
let vc = navigationController.topViewController as LoggedInViewController
vc.email = emailTextfield.text
}
}
Ответ 2
Если кто-то приходит сюда, потому что это первый удар на EXC_BREAKPOINT:
Для меня это очень убедительное исключение было выбрано из-за fatal error: unexpectedly found nil while unwrapping an Optional value
, которое произошло, потому что IBOutlet использовался до того, как он был инициализирован.