我正在尝试使用文本字段input * 365
填充标签
我不断收到消息:
二元运算符' *'不能应用于' UITextField'类型的操作数和' Int'
var hours = (hoursTextField.text as NSString).doubleValue
var hoursInAYear = hoursTextField * 365
答案 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
,我们将使用*
运算符的重载,它接受两个双精度数(并返回一个双精度数)。