2017-05-24 126 views
0

我在一款游戏上工作,在模拟器中完美地运行一切。但是,当我尝试归档项目,我得到一个错误就行了:二进制运算符>错误

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)时,游戏在模拟器上工作,但在尝试归档时出现错误。

有什么建议吗?

回答

2

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 { ... } 
相关问题