【问题标题】:cannot be applied to operands of type 'UITextField' and 'Int'不能应用于“UITextField”和“Int”类型的操作数
【发布时间】:2015-05-29 20:19:50
【问题描述】:

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

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

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

【问题讨论】:

  • 提示 1:未使用小时变量 .... 提示 2:阅读错误消息。

标签: ios swift


【解决方案1】:

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

var hoursInAYear = hours * 365

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      var hoursInAYear = hours * 365
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 2015-01-25
        • 2011-12-31
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多