如何解决:“表达是模糊的”。

时间:2017-07-13 22:52:37

标签: ios swift

我正在尝试创建一个可以帮助您计算商品销售税的应用。当然应用程序需要乘法但我一直遇到错误:

  

“没有更多上下文的表达类型是不明确的”

你能帮帮我吗?我是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)")
    }
}

谢谢!

2 个答案:

答案 0 :(得分:1)

您的主要问题是您尝试将IntUITextField相乘。

您尝试从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)")
    }
}