“不能分配给属性:”任何“是不可变的”错误

tiledViewsStack包含UIImageViews。 我试图给数组中的每个UIImageView一个新的中心坐标。 不知道为什么我得到这个错误的for循环的最后一行… 在这里输入图像说明

  var tiledViewsStack = [AnyObject]() var randLocInt = Int() var randLoc = CGPoint() for var any in tiledViewsStack { randLocInt = Int((arc4random()*10) % 9) // 0, --- 8 randLoc = allCenters[randLocInt].CGPointValue() any.center = randLoc } 

需要做tiledViewsStack一堆UIImages,而不是AnyObjects。 将var tiledViewsStack = [AnyObject]()更改为var tiledViewsStack = [UIImageView]()

当您使用Anyobject时 ,您正在使用协议

它可以是任何types的遗传。 所以AnyObject可以表示一个Int,一个Float,一个String,一个UIView,任何东西。

数组[AnyObject]是一种非特定types来表示任何types的类。 在你的代码你初始化一个总是不可变的数组,当你试图修改每个元素,你会得到错误..

声明和初始化这个数组types的正确方法是:

 var genericTypeArray : [AnyObject] = [1, true, 1.2, "hello"] 

对于你的代码,你必须改变:

 var tiledViewsStack = [AnyObject]() 

像我的例子一样的代码,或者你修改AnyObject类与指定的类像UIImageViewbuild议在评论。