"二元运算符>不能应用于两个Float操作数"错误

时间:2015-07-23 19:44:55

标签: swift2

我的条件如下:

btn1

我收到的错误是if sqrtf(powf(startTouch.x - (touches.first as! UITouch).locationInView(self.view).y, 2) + powf(startTouch.y-(touches.first as! UITouch).locationInView(self.view).y, 2)) > dragThreshold as! Float { self.drag = false; } 。我无法理解为什么我无法检查浮子是否大于另一个浮子。这个错误试图告诉我什么?

2 个答案:

答案 0 :(得分:2)

CGPoint的成员属于CGFloat类型,假设您使用的是64位架构,则用于存储CGFloat的本机类型为Double - 尝试将这些计算值视为Double s(使用sqrt()pow()而不是Float版本)...使用dragThreshold作为Double以及

答案 1 :(得分:1)

使用最新的Xcode 7 beta 4和SpriteKit的函数override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)我确实将这一大块打破了这样的小块:

let dragThreshold: Int = 1
let startTouch = CGPointZero
let pow1 = powf(Float(startTouch.x - touches!.first!.locationInView(self.view).y), 2.0)
let pow2 = powf(Float(startTouch.y-touches!.first!.locationInView(self.view).y), 2.0)
let sq = sqrtf(pow1 + pow2)

if sq > Float(dragThreshold) {
    self.drag = false;
}

这很有效。基本上为powf参数添加了更多转换,更改为2到2.0

一般建议 - 如果您遇到一些奇怪的错误,请尝试将您的表达式分解为较小的错误以隔离问题。