二元运算符 + 不能应用于 CGfloat int 类型的操作数

Binary Operator + Cannot be Applied to Operands of Type CGfloat int

我遇到了与之前相同的问题,但代码行不同;但是这一次,我没能用上次的方法修复它:

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

这是我收到的错误:

binary operator + cannot be applied to operands of type CGfloat int

改为声明它们,如下所示:

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

回复您的评论:

该错误与它们被声明为 varlet 无关。 您可以将它们声明为 var,如果您坚持将它们声明为 Int,您仍然需要执行以下操作:

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

问题是您没有相同的变量类型,例如您不能添加 bool 和 string。

将其更改为 CGFloat 而不是 int:

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

ball.center.x 是一个 CGFloat,X 是一个 Int。这就是编译器抱怨的地方。

Swift 喜欢你输入强制转换数字类型(就好像数字域中没有层次结构一样)但你可以通过将 X 和 Y 声明为 CGFloat 而不是 Int 来避免这种情况。

您也可以通过定义运算符(Swift 应该已经有了恕我直言)来彻底解决这个问题:

infix operator + {}

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

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