我是一名对自学有兴趣的高中生。我已经开始独立学习swift大约3个月了,这是我第一次做和学习如何编码。所以我想到了这个超级简单的应用程序理念,它只会将文本字段中提供的两个数字相乘,并且在按下按钮代替标签后显示结果。这是代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var resultLabel: UILabel!
@IBOutlet var num1: UITextField!
@IBOutlet var num2: UITextField!
@IBAction func calculateButton(sender: UIButton) {
let num1Entered: String? = num1.text
let num2Entered: String? = num2.text
var multiplyIt: Double? {
return Double(num1Entered!)! * Double(num2Entered!)!
}
resultLabel.text = String(multiplyIt)
}
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.
}
}
所以我的问题是,当我在模拟器中运行应用程序并放置一个字符或字符串时,应用程序崩溃了。我知道原因,因为我强行解开价值。我尝试使用&#34安全地打开它;如果让#34;,但我无法绕过它。
所以有人可以帮助我,或者可以告诉我应该怎么做,对我已编写的代码进行一些修改。
答案 0 :(得分:3)
问题是在此行中强制展开nil值:
return Double(num1Entered!)! * Double(num2Entered!)!
将其更改为:
return (Double(num1Entered ?? "") ?? 0) * (Double(num2Entered ?? "") ?? 0)
<强>更新强>
如果您想要自定义行为以防没有输入数字,请使用以下代码方案:
if let num1 = Double(num1Entered ?? ""), num2 = Double(num2Entered ?? "") {
resultLabel.text = num1 * num 2
} else {
resultLabel.text = "No valid number entered"
}
答案 1 :(得分:1)
您的标签值是字符串值,因此您应首先将字符串值转换为Double。然后你做乘法或一些算术功能,然后再次需要将它显示为文本,然后再将其转换为字符串,如下所示: -
@IBAction func calculateButton(sender: UIButton) {
let num1Entered:Double = Double(num1.text)!
let num2Entered:Double = Double(num2.text)!
var multiplyIt: Double = num1Entered * num2Entered
resultLabel.text = String(multiplyIt)
}