Swift EXC_BREAKPOINT when assigning viewcontroller

2020-08-16 06:09发布

Im getting an error when trying to perform a variable assignment with my destinationViewController.

The error message is this: Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

This in my prepareForSegue function.

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if segue.identifier == "LoginSegue"{

        let vc = segue.destinationViewController as LoggedInViewController
        vc.email = emailTextfield.text

    }
}

In the other file it looks like this.

var email: String?

which is at the top. Then this:

override func viewDidLoad() {
    super.viewDidLoad()

    println("Email is:")
    println(email)
    println("Email was")
}

But i never come into the second file.

It is the line let vc = segue.destinationViewController as LoggedInViewController that is marked with error.

Both swift files are connected to navigation controllers.

I dont know what more you need, but I will of course post all code you need to understand!

Thanks!

标签: ios swift
2条回答
Fickle 薄情
2楼-- · 2020-08-16 06:26

In case somebody comes here because it's the first hit on EXC_BREAKPOINT:

For me this very telling exception was thrown because of a fatal error: unexpectedly found nil while unwrapping an Optional value that happened because an IBOutlet was used before it was initialized.

查看更多
冷血范
3楼-- · 2020-08-16 06:37

In your case destination controller is navigation controller not your LoggedInViewController , So segue.destinationViewController as LoggedInViewController is an error , therefore it is crashing.

Try like this

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

    }
}
查看更多
登录 后发表回答