不能应用于'UITextField'和'Int'types的操作数
我正在尝试使用文本字段input * 365
填充标签input * 365
我不断收到消息:
二进制运算符“*”不能应用于“UITextField”和“Int”types的操作数
var hours = (hoursTextField.text as NSString).doubleValue var hoursInAYear = hoursTextField * 365
你的第一行是计算input到文本字段的doubleValue
,但是你没有使用那个hours
variables。 也许你想要:
var hoursInAYear = hours * 365
你得到的警告是告诉你,你正试图在一个UITextField
types的variables和另一个types为Int
的variables之间使用*
运算符(这是你的365
文字被解释为)。
这个警告会在我们尝试在两种types的操作员之间使用操作员没有过载的时候出现。 当我们的一个操作数的types被隐式确定,因为我们在某处使用了一个字面值时,这是特别常见的。 为了解决这个问题,我们必须仔细检查我们的操作数的实例,并确保它们是我们的操作符有过载的types。
如果它们不是,那么我们应该改变我们如何创build这些variables,使它们具有正确的types,或者find某种方式将它们与操作符一起使用。
当我们将错误的variables从文本字段更改为我们刚刚计算的double值时,Swift能够正确计算这个值。 尽pipe以前声称365
是一个Int
,作为一个文字,它可以被解释为几种不同的types,其中之一包括Double
。
当我们尝试在Double
types的variables和文字数字之间使用*
,文字数字将被正确地转换为Double
,我们将使用接受两个双精度的*
运算符的重载(并返回一个double) 。
您正试图将hoursTextField
乘以365
。 你的意思是写:
var hours = (hoursTextField.text as NSString).doubleValue var hoursInAYear = hours * 365 // hours, not hoursTextField.
我认为这基本上只是你的错字或复制粘贴错误,因为你已经正确计算了hours
variables,并且之后不使用它。 只需将您的第二行改为
var hoursInAYear = hours * 365