gpt4 book ai didi

ios - 当文本字段为空时 EXC_BAD_INSTRUCTION

转载 作者:行者123 更新时间:2023-11-30 13:50:17 27 4
gpt4 key购买 nike

这里有一个大n00b:-)

我为 IOS 制作了第一个应用程序,只要填充所有文本字段,一切就可以正常工作。这个应用程序是一个简单的计算应用程序,我需要一些帮助以确保该应用程序在字段为空时不会关闭。

这是按下简单计算按钮时的代码。

class ViewController: UIViewController {

@IBOutlet weak var panelWidthTextField: UITextField!
@IBOutlet weak var panelHightTextField: UITextField!
@IBOutlet weak var panelsWideTextField: UITextField!
@IBOutlet weak var panelsHightTextField: UITextField!
@IBOutlet weak var panelPitchTextField: UITextField!

@IBOutlet weak var resultWithLabel: UILabel!
@IBOutlet weak var resultHightLabel: UILabel!


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 calculatePressButton(sender: AnyObject) {
let w = Double(panelWidthTextField.text!)
let sw = Double(panelsWideTextField.text!)
let pi = Double(panelPitchTextField.text!)
let sizew = SizeWidthModel(pw:w!,psw:sw!,ptc:pi!)
resultWithLabel.text=String(sizew.width())

let h = Double(panelHightTextField.text!)
let sh = Double(panelsHightTextField.text!)
let sizeh = SizeHightModel(ph:h!,psh:sh!,ptc:pi!)
resultHightLabel.text=String(sizeh.hight())

}

}

这是我的问题。 Error code

希望有人能指出我正确的方向。

编辑:由于我对这个编码完全是个新手,所以我需要更多帮助来理解这一点。我尝试添加各种解决方案但没有运气。我试图在用户将字段留空时弹出一条消息,因为计算需要填写所有字段。如果有人有时间指导我,我将不胜感激:-)

最佳答案

我也花了一段时间才弄清楚选项,但希望这个解释有帮助:当从字符串(panelWidthTextField.text 是什么)转换为 Double 时,Swift 不知道该字符串是否有效。因为它可能是有效的,也可能不包含有效值(为零),所以它是一个可选的 String?,它可以包含有效的字符串,也可以为 nil。但仅仅因为它可以为 nil 并不意味着您可以在代码中使用 nil。

“!”说“使用这个变量中的数据,即使它是零,因为我不认为它是零。”问题是,如果它为零,那么 Double(nil) 将使您的应用程序崩溃。

If let(还有一个“if var”)会说“查看(展开)这个可选值。如果它有效,则执行第一组大括号中的操作(这是一个 let 或 var 赋值),否则执行第二组大括号中的操作。

    if let w = Double(panelWidthTextField.text!) {
// you're good to go
} else {
// give the user instructions on how to fix the error.
}

nil 合并运算符也可能有帮助。内容如下:

//打开 a 并查看它。如果a不为nil,则使用它,如果为nil,则使用默认值b

a ?? b

如果您想输入默认值(如需要有效数字则为零),请尝试:

var w = Double(panelWidthTextField.text!)?? 0

关于ios - 当文本字段为空时 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com