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

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

二进制运算符“*”不能应用于“UITextField”和“Int”types的操作数

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

你的第一行是计算input到文本字段的doubleValue ,但是你没有使用那个hoursvariables。 也许你想要:

 var hoursInAYear = hours * 365 

你得到的警告是告诉你,你正试图在一个UITextFieldtypes的variables和另一个types为Int的variables之间使用*运算符(这是你的365文字被解释为)。

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

如果它们不是,那么我们应该改变我们如何创build这些variables,使它们具有正确的types,或者find某种方式将它们与操作符一起使用。

当我们将错误的variables从文本字段更改为我们刚刚计算的double值时,Swift能够正确计算这个值。 尽pipe以前声称365是一个Int ,作为一个文字,它可以被解释为几种不同的types,其中之一包括Double

当我们尝试在Doubletypes的variables和文字数字之间使用* ,文字数字将被正确地转换为Double ,我们将使用接受两个双精度的*运算符的重载(并返回一个double) 。

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

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

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

 var hoursInAYear = hours * 365