2017-05-24 125 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 { ... } 
相關問題