线程1:EXC_BAD_INSTRUCTION解除键盘和零值的问题(.isNaN)

时间:2016-11-18 03:15:46

标签: ios swift xcode

我正在制作一个解决缺失变量的计算器应用程序,我添加了一段代码,通过点击屏幕上的任意位置或按“返回”键来解除键盘。

在添加if else语句以检查哪个变量丢失(使用.isNaN)之前,此函数正常工作,以便它可以解决该缺失变量。

这是我的特定视图控制器的代码:

import UIKit

class findSpeed: UIViewController, UITextFieldDelegate {


@IBOutlet weak var vValue: UITextField!
@IBOutlet weak var dValue: UITextField!
@IBOutlet weak var tValue: UITextField!
@IBOutlet weak var answer: UILabel!

@IBAction func solve(_ sender: UIButton) {

    let v = Float(vValue.text! as String);
    let d = Float(dValue.text! as String);
    let t = Float(tValue.text! as String);

    let solvev = (d!/t!);
    let solved = (v!*t!);
    let solvet = (d!/v!);

    if (v!.isNaN) {
        answer.text = "Answer: \(solvev)"
    }

    else if (d!.isNaN) {
        answer.text = "Answer: \(solved)"
    }

    else {
        answer.text = "Answer: \(solvet)"
    }

}

override func viewDidLoad() {
    super.viewDidLoad()
    vValue.delegate = self;
    dValue.delegate = self;
    tValue.delegate = self;
    self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector("dismiss")))
}

func dismiss() {
    vValue.resignFirstResponder()
    dValue.resignFirstResponder()
    tValue.resignFirstResponder()
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    vValue.resignFirstResponder()
    dValue.resignFirstResponder()
    tValue.resignFirstResponder()
    return true
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

当我点击链接到此视图控制器的按钮时,我收到的错误发生在: Picture of error

1 个答案:

答案 0 :(得分:0)

使用调试器查看应用程序崩溃的原因。显然protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acercade_activity); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. // MenuInflater inflater = getMenuInflater(); getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ //case R.id.action_settings: // return true; case R.id.perfil: drawerLayout.openDrawer(Gravity.LEFT); return true; default: return super.onOptionsItemSelected(item); } } vValve,这意味着您没有将任何内容连接到Interface Builder中的插座。

修复您的插座连接,您的问题中发布的错误将得到修复。

您还需要消除您正在进行的所有强制解包。否则你将有更多的崩溃需要处理。我强烈建议您查看What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean?