欠けている変数を解決する電卓アプリを作っています。画面上の任意の場所をタップしてキーボードを閉じるコードを追加しました「戻る」キーを押してください。スレッド1:EXC_BAD_INSTRUCTIONキーボードとnilの値を無効にする問題(.isNaN)
この関数は、欠落している変数(.isNaNを使用)が不足している変数を解決できるように、if elseステートメントを追加する前に機能していました。ここで
は、その特定のビューコントローラのための私のコードです:
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
FYI - あなたの問題はキーボードを無効にすることとは関係なく、追加された 'else'ステートメントとは関係ありません。あなたのコードは 'viewDidLoad'でクラッシュしていますので、' solve'のコードはどうやって問題になりますか? – rmaddy