将viewcontroller分配给prepareForSegue中的变量时,Swift EXC_BREAKPOINT

时间:2014-07-03 12:58:25

标签: ios swift

尝试使用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")
}

但我从未进入第二档。

将vc = segue.destinationViewController作为标记为错误的LoggedInViewController行。

两个swift文件都连接到导航控制器。

我不知道你还需要什么,但我当然会发布你需要理解的所有代码!

谢谢!

2 个答案:

答案 0 :(得分:28)

在你的情况下,目标控制器是导航控制器而不是你的 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

    }
}

答案 1 :(得分:2)

如果有人来这里,因为这是EXC_BREAKPOINT的第一次点击:

对我来说,这个非常有说服力的异常是因为fatal error: unexpectedly found nil while unwrapping an Optional value因为在初始化之前使用了IBOutlet而发生的。