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 использовался до того, как он был инициализирован.