tipo puede operandos operador aplicar ios swift swift2 cgfloat

ios - el operador== no se puede aplicar a operandos del tipo string



El operador binario+no se puede aplicar a los operandos de tipo CGfloat int (3)

El problema es que no tiene los mismos tipos de variables, por ejemplo, no puede agregar bool y string.

Cámbielo a CGFloat en lugar de int:

let X : CGFloat = 0.0 let Y : CGFloat = 0.0

Estoy teniendo el mismo problema que antes con una línea de código diferente; pero esta vez, no pude solucionarlo con el mismo enfoque que la última vez:

var Y : Int = 0 var X : Int = 0 @IBOutlet var ball : UIImageView! ball.center = CGPointMake(ball.center.x + X, ball.center.y + Y)

Este es el error que estoy recibiendo:

El operador binario + no se puede aplicar a los operandos de tipo CGfloat int


ball.center.x es un CGFloat y X es un Int. Ahí es donde el compilador se queja.

A Swift le gusta que escriba tipos numéricos de molde (como si no hubiera una jerarquía en los dominios numéricos), pero puede evitar eso declarando X e Y como CGFloat en lugar de Int.

También podría deshacerse del problema definitivamente definiendo el operador (que Swift ya debería tenerlo):

infix operator + {} func +(left:CGFloat, right:Int) -> CGFloat { return left + CGFloat(right) } func +(left:Int, right:CGFloat) -> CGFloat { return CGFloat(left) + right }


Declararlos, en cambio, como los siguientes:

let X : CGFloat = 0.0 let Y : CGFloat = 0.0

En respuesta a tu comentario:

El error no tiene nada que ver con que se declaren como var o let . Puede declararlos como var y si insiste en declararlos como Int , aún deberá hacer lo siguiente:

var X : Int = 0 var Y : Int = 0 ball.center = CGPointMake(view.center.x + CGFloat(X), view.center.y + CGFloat(Y))