2017-07-13 37 views
0

我正在尝试创建一个可以帮助您计算物品销售税的应用程序。当然,该应用程序需要乘法但我一直遇到错误:如何修复:“表情不明确”。

"Type of expression is ambiguous without more context"

你能帮我吗?我是新来的快,所以也试着解释我为什么不正确。这是我的代码到目前为止:

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

'conversionRate'的类型是'UITextField'和傻冒试图通过'Int'乘它,你需要投'conversionRate'到'Int',然后乘用它。 –

回答

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)") 
    } 
} 
1

您的主要问题是您试图乘以IntUITextField

您尝试从Item.text创建Int,但是您没有尝试将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" 
     } 
    } 
} 
+0

感谢您的好解释! – sam