我正在尝试创建一个可以帮助您计算商品销售税的应用。当然应用程序需要乘法但我一直遇到错误:
你能帮帮我吗?我是swift的新手,所以也试着解释我为什么不正确。到目前为止,这是我的代码:“没有更多上下文的表达类型是不明确的”
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Item: UITextField!
@IBOutlet weak var Tax: UITextField!
@IBOutlet weak var Answer: UITextField!
@IBAction func Calculate(_ sender: Any) {
let a = Item.text
let conversionRate = Tax
let b = Int(a!)! * conversionRate
Answer.text = ("\(b)")
}
}
谢谢!
答案 0 :(得分:1)
您的主要问题是您尝试将Int
和UITextField
相乘。
您尝试从Int
创建Item.text
,但您没有尝试将Tax.text
转换为数字。
您的代码还存在许多其他问题。您过度使用!
运算符,结果会导致您的应用崩溃。
您的命名约定需要改进。变量和方法应以小写字母开头。
这里是您应该编写的代码:
class ViewController: UIViewController {
@IBOutlet weak var item: UITextField!
@IBOutlet weak var tax: UITextField!
@IBOutlet weak var answer: UITextField!
@IBAction func calculate(_ sender: Any) {
if let itemStr = item.text, let taxStr = tax.text, let itemVal = Int(itemStr), let taxVal = Int(taxStr) {
let result = itemVal * texVal
answer.text = "\(result)"
} else {
answer.text = "Invalid values"
}
}
}
答案 1 :(得分:0)
您尝试将UITextField类型的变量与Int变量相乘。试试这个:
class ViewController: UIViewController {
@IBOutlet weak var Item: UITextField!
@IBOutlet weak var Tax: UITextField!
@IBOutlet weak var Answer: UITextField!
@IBAction func Calculate(_ sender: Any) {
guard let a = Int(Item.text ?? "0") else { return }
guard let conversionRate = Int(Tax.text ?? "0") else { return }
let b = a * conversionRate
Answer.text = ("\(b)")
}
}