Swift Float到UInt8的转换是不必要的?

时间:2014-07-23 00:40:11

标签: swift

我在测试版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,但我已经尝试修复它并导致更多的转换错误。有人在这看到问题吗?

1 个答案:

答案 0 :(得分:1)

错误消息没有任何意义,因为问题在于您要比较FloatCGFloat。在之前的Swift测试版中,CGFloat(至少有时候)为Float设置了别名,所以你可以放弃它,但在beta 4中它是它自己的类型。您可以在比较中将浮动值转换为CGFloat

if (CGFloat(distance) >= minDist) {
    return true
}

Float - >更安全CGFloat因为在某些架构上CGFloat是一个Double