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))