我在测试版4的swift中遇到了很多关于转换的错误。我看到这是一个非常常见的问题,我能够解决大部分错误,除了这个错误:
let xDistance = testCircle.position.x - circle.position.x
let yDistance = testCircle.position.y - circle.position.y
let distance = (sqrt(pow(Float(xDistance), 2) + pow(Float(yDistance), 2)))
let minDist = testCircle.size.width * 1.5 + circle.size.width/2
if (distance >= minDist) {
return true
}
if (distance >= minDist)
返回以下错误:
'Float' is not convertible to 'UInt8'
我不确定为什么我需要在这里使用UInt8,但我已经尝试修复它并导致更多的转换错误。有人在这看到问题吗?
答案 0 :(得分:1)
错误消息没有任何意义,因为问题在于您要比较Float
和CGFloat
。在之前的Swift测试版中,CGFloat(至少有时候)为Float设置了别名,所以你可以放弃它,但在beta 4中它是它自己的类型。您可以在比较中将浮动值转换为CGFloat
:
if (CGFloat(distance) >= minDist) {
return true
}
去Float
- >更安全CGFloat
因为在某些架构上CGFloat
是一个Double
。