二进制运算符>错误
问题描述:
我在一款游戏上工作,在模拟器中完美地运行一切。但是,当我尝试归档项目,我得到一个错误就行了:二进制运算符>错误
if !shouldDetectScoreCollision && ballClearHeight.native > basketballHoopHeight {
错误:二进制运算符>不能应用于类型cgfloat.native的操作数(又名浮动)和双(上ballClearHeight.native和basketballHoopHeight)
我也有几个常数:
let halfBall = basketball.size.height/2.0
let ballClearHeight = basketball.position.y - halfBall
let basketballHoopHeight = 200.0
for i in 1 ..< throwPoints.count {
// CGFloat.native is a Double
dx += throwPoints[i].x - throwPoints[i-1].x
dy += throwPoints[i].y - throwPoints[i-1].y
}
我试图转换basketballHoopHeight =浮动(200.0),这使我的错误:二进制运算符>不能应用于类型cgfloat.native的操作数(又名双)和漂浮(在ballClearHeight.native和d basketballHoopHeight)
而且还试图转换basketballHoopHeight = CGFloat的(200.0),这使我错误:二进制运算符>不能被施加到型cgfloat.native的操作数(又名浮动)和CGFloat的(上和ballClearHeight.native basketballHoopHeight )
但是,当我转换let basketballHoopHeight = Float(200.0)时,游戏在模拟器上工作,但在尝试归档时出现错误。
有什么建议吗?
答
ballClearHeight.native
处于 “天然的”类型CGFloat
的值,这是在64位平台Double
和 一个Float
在32位平台。因此既不
ballClearHeight.native > basketballHoopHeight // rhs is a Double
ballClearHeight.native > Float(basketballHoopHeight) // rhs is a Float
将编译所有平台(因为它是用于归档完成)。
所以忘了.native
财产,只是比较CGFloat
值:
let basketballHoopHeight: CGFloat = 200.0
if !shouldDetectScoreCollision && ballClearHeight > basketballHoopHeight { ... }