我遇到了与之前不同代码行相同的问题;但这一次,我无法用上次采用的相同方法解决问题:
var Y : Int = 0
var X : Int = 0
@IBOutlet var ball : UIImageView!
ball.center = CGPointMake(ball.center.x + X, ball.center.y + Y)
这是我得到的错误:
二元运算符+不能应用于CGfloat int类型的操作数
答案 0 :(得分:4)
相反,声明它们如下:
let X : CGFloat = 0.0
let Y : CGFloat = 0.0
回复你的评论:
该错误与声明为var
或let
的错误无关。
您可以将它们声明为var
,如果您坚持将其声明为Int
,则仍需要执行以下操作:
var X : Int = 0
var Y : Int = 0
ball.center = CGPointMake(view.center.x + CGFloat(X), view.center.y + CGFloat(Y))
答案 1 :(得分:1)
问题是你没有相同的变量类型,例如你不能添加bool和string。
将其更改为CGFloat而不是int:
let X : CGFloat = 0.0
let Y : CGFloat = 0.0
答案 2 :(得分:1)
ball.center.x是CGFloat,X是Int。这就是编译器抱怨的地方。
Swift喜欢你输入强制转换数字类型(好像没有数字域中的层次结构)但你可以通过将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 }