二元运算符+不能应用于CGfloattypes的操作数

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

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

这是我得到的错误:

二元运算符+不能应用于CGfloattypes的操作数

声明他们,而是,如下所示:

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

问题是你没有相同的variablestypes,例如你不能添加布尔和string。

将其更改为CGFloat而不是int:

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

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

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

你也可以通过定义运算符(Swift应该已经有了imho)来解决这个问题:

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