2017-05-24 10 views
0

ゲームで作業しているImは、すべてを完全に処理します。私はプロジェクトをアーカイブしようとする。しかし、私はライン上のエラーを取得:バイナリ演算子>エラー

if !shouldDetectScoreCollision && ballClearHeight.native > basketballHoopHeight { 

エラー:バイナリ演算子は> ballClearHeight.native上型cgfloat.native(別名フロート)とダブル(のオペランドに適用することはできませんそしてbasketballHoopHeight)も私が持っている

定数のカップル:バイナリ演算子>型cgfloat.nativeのオペランドに適用することはできません。

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)は、変換しようとしました(別名double)とfloat(ballClearHeight.nativeの二項演算子> ballClearHeight.nativeとbasketballHoopHeight上(型cgfloat.native(別名フロート)とcgfloatのオペランドに適用することはできません:D basketballHoopHeight)

そしてまた私にエラーを与えるbasketballHoopHeight = CGFloat(200.0)は、変換しようとしました)

しかし、basketballHoopHeight = Float(200.0)を変換すると、ゲームはシミュレータ上で動作しますが、アーカイブしようとするとエラーが発生します。

お願いします。

答えて

2

ballClearHeight.nativeは 「天然」型でCGFloatの値であり、それは、32ビットプラットフォーム上の64ビット・プラットフォーム上のDoubleFloatあります。 (それはアーカイブのために行われているように)ためでもない

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 { ... } 
関連する問題