二元运算符问题' - '

时间:2015-06-05 20:32:38

标签: swift uiview binary operator-keyword

我收到一个奇怪的错误,说明二进制运算符' - '不能应用于我正在开发的应用程序的最新版本中的两个CGPoint操作数。这非常令人困惑,因为我知道它可以应用,因为我在此应用程序的先前版本中运行了相同的代码行。我试图通过重写项目并解决相同的问题来解决错误。导致问题的代码行是这样的:

    func updateRKnobWithPosition(position:CGPoint) {
       var positionToCenter = position - baseCenter
       var direction: CGPoint

       if positionToCenter == CGPointZero {
          direction = CGPointZero
       } else {
          direction = positionTOCenter.normalized()
       }

...

    delegate?.analogRControlPositionChanged(self, position: relativePosition)
       }

其中relativePosition是类中的CGPoint。

谁能告诉我这里哪里出错了?如果它不是我的代码,它是否与Xcode有关?

由于

2 个答案:

答案 0 :(得分:3)

也许你之前没有正确使用它。 但如果你坚持认为它之前确实正常工作,那么也许有人或某个图书馆有一个适用于CGPoint的操作员功能

您可以按如下方式创建操作员功能

func - (first: CGPoint, second: CGPoint) -> CGPoint {
 return CGPointMake(first.x - second.x, first.y - second.y)
}

答案 1 :(得分:1)

通过查看CGPoint的文档,可以快速解释您的问题。它被定义为:

struct CGPoint { var x: CGFloat var y: CGFloat init() init(x x: CGFloat, y y: CGFloat) }

所以,你要求它从另一个结构中减去一个结构,它不知道如何去做。 :)

问题是你在iOS和Mac库中所做的大部分工作都是面向对象的,但图形库主要是C代码,而不是带有重载运算符的对象。 :)