“线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,subside = 0x0)

时间:2017-03-05 02:38:43

标签: swift xcode null optional

抱歉我是新的堆栈溢出所以我可能会以错误的格式发布这个..

我尝试设置登录信息,因此用户将用户名和密码输入两个文本字段。如果他们已经开帐户,他们按“登录”按钮继续。如果他们创建了一个新帐户,他们按下“注册”按钮,然后将它们指向新的视图控制器。在此控制器中,我想将他们输入的数据放入以前的文本字段中,并在注册页面中填写新的用户名和密码文本字段。

我曾尝试关注如何执行此操作的YouTube视频,但我一直都会遇到这个愚蠢的错误,而且我不知道如何绕过它。

//
//  ViewController.swift
//  Silver
//
//  Created by Lakeside Software on 3/3/17.
//  Copyright © 2017 KenSchumacher. All rights reserved.
//

import UIKit
import Firebase

class ViewController: UIViewController {

@IBOutlet weak var returningEmail: UITextField!


@IBOutlet weak var returningPassword: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func LoginFunction(_ sender: Any) {

    func login() {

        FIRAuth.auth()?.signIn(withEmail: returningEmail.text!, password: returningPassword.text!, completion: {
            user, error in

            if error != nil{
                //Password is not right
                print("Password is incorrect")
            }
            else {
                //password is correct
                print("Welcome in")
            }
        })
    }
}
@IBOutlet weak var UsernameForRegistrationText: UITextField!


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    var DestViewController = segue.destination as! viewTwo


   if UsernameForRegistrationText == nil
   {
    DestViewController.viewTwo.text = "0"
    }
   else {
    //DestViewController.testLabel.text =      UsernameForRegistrationText.text!
    DestViewController.viewTwo.text = "5"
}
}

}

在代码的最后一行,我得到一个“线程1:EXC_BAD_INSTUCTION(代码:EXC_I386_INVOP,补贴0x0

致命错误:在解包可选值时意外发现nil

我收到此错误,但我认为我已经设置了if else语句来判断该值是否为nil?

我将0和5放入以查看代码是否正常运行且没有任何错误......

有人有任何帮助吗?我将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

您要测试UsernameForRegistrationText是否为零。

但你做测试以查看UsernameForRegistrationText.text是否为零。因此,如果它为零,则在您说UsernameForRegistrationText.text!

时会崩溃

请记住,在Swift中,只要在引用后添加感叹号(!),就会要求崩溃。