不能应用于' UITextField'类型的操作数和' Int'

时间:2015-04-26 16:07:48

标签: ios swift

我正在尝试使用文本字段input * 365填充标签 我不断收到消息:

  

二元运算符' *'不能应用于' UITextField'类型的操作数和' Int'

var hours = (hoursTextField.text as NSString).doubleValue
var hoursInAYear = hoursTextField * 365

3 个答案:

答案 0 :(得分:0)

您正试图将hoursTextField乘以365。你的意思是写:

var hours = (hoursTextField.text as NSString).doubleValue
var hoursInAYear = hours * 365 // hours, not hoursTextField.

答案 1 :(得分:0)

我认为这基本上只是你的错字或复制粘贴错误,因为你已经正确计算了hours变量并且之后不再使用它。只需将第二行更改为

即可
var hoursInAYear = hours * 365

答案 2 :(得分:0)

您的第一行是计算在文本字段中输入内容的doubleValue,但您没有使用该hours变量。也许你想要:

var hoursInAYear = hours * 365

您收到的警告告诉您,您尝试在类型为*的变量与另一个类型为UITextField的变量之间使用Int运算符(这是您的365字面值被解释为)。

当我们尝试在操作员没有过载的两种类型之间使用运算符时,会出现此警告。当我们的操作数类型之一被隐式确定时,这是特别常见的,因为我们在某处使用了一个文字。要解决这个问题,我们必须仔细检查操作数的实例化,并确保它们是我们的运算符过载的类型。

如果不是,那么我们应该改变我们创建这些变量的方式,使它们具有正确的类型,或者在我们将它们与运算符一起使用时找到一些转换它们的方法。

当我们将错误的变量从文本字段更改为我们刚刚计算的双精度时,Swift能够正确地计算出来。尽管之前声称365是一个Int,但它可以被解释为几个不同的类型,其中一个包含Double

当我们尝试在*类型的变量与文字编号之间使用Double时,文字编号将正确转换为Double,我们将使用*运算符的重载,它接受两个双精度数(并返回一个双精度数)。