【问题标题】:Binary Operator '>= & <=' cannot be applied to operands of type CGFloat and Int In Swift在 Swift 中,二元运算符 '>= & <=' 不能应用于 CGFloat 和 Int 类型的操作数
【发布时间】:2015-10-12 22:10:15
【问题描述】:

我遇到了两个错误。当我使用 = 时,它给了我错误:

二元运算符 '>= &

 override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
    var speedOfTouch = 30

    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)

        if location.x < CGRectGetMidX(self.frame) {
            square.position.x <= speedOfTouch
            square.physicsBody?.applyImpulse(CGVector(dx: -40, dy: 0))



        }
        else {
            square.position.x >= speedOfTouch
            square.physicsBody?.applyImpulse(CGVector(dx: 40, dy: 0))
        }

    }
}

我需要帮助!

【问题讨论】:

    标签: swift sprite-kit int cgfloat binary-operators


    【解决方案1】:

    换一行:

    let speedOfTouch = CGFLoat(30)
    

    它不起作用,因为您无法像编译器所说的那样比较两种不同的类型

    【讨论】:

      【解决方案2】:

      快速编译器认为尝试比较两种不同类型是程序员的错误。

      只需将您的代码更改为:

      var speedOfTouch = 30 as CGFloat
      

      【讨论】:

        【解决方案3】:

        我发现至少有两个问题。

        1. speedOfTouch 具有 Int 类型,因为您没有指定任何其他类型。因此,在表达式 square.position.x &lt;= speedOfTouch 中,您尝试比较 CGFloatInt

          Swift 不会自动在数字类型之间进行转换,也没有定义 &lt;= 运算符,它在左侧采用 CGFloat,在右侧采用 Int,因此您无法比较不同类型的两个值.

          您可以通过例如将speedOfTouch 明确声明为CGFloat 来解决此问题:

          var speedOfTouch: CGFloat = 30
          
        2. 另一个不会给您带来编译器错误的问题是您将square.position.x &lt;= speedOfTouch 写为语句。您正在比较两个值,但您没有对比较结果做任何事情。

          在优化(发布)构建中,编译器可能会完全消除比较。那你为什么要这么做?

          您可能想对比较的结果做点什么。例如,也许您想这样做:

          if ((location.x < CGRectGetMidX(self.frame))
              && (square.position.x <= speedOfTouch)) {
              square.physicsBody?.applyImpulse(CGVector(dx: -40, dy: 0))
          }
          

        【讨论】:

          猜你喜欢
          • 2016-09-20
          • 2015-10-22
          • 1970-01-01
          • 2015-08-21
          • 1970-01-01
          • 1970-01-01
          • 2018-01-18
          • 2017-09-02
          • 2015-08-12
          相关资源
          最近更新 更多