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

时间:2016-04-10 03:23:04

标签: ios arrays swift uiimageview immutability

tiledViewsStack包含UIImageViews。我试图给阵列中的每个UIImageView一个新的中心坐标。不知道为什么我在for循环的最后一行收到此错误... enter image description here

    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
    }

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用 Anyobject 时,您使用的是协议

它可以是任何类型的istance。 所以 AnyObject 可以表示Int,Float,String,UIView,任何东西。

数组 [AnyObject] 是一种非特定类型,用于表示任何类型的类。在您的代码中,您初始化一个永远不可变的数组,当您尝试修改每个元素时,您会收到错误..

声明和初始化此数组类型的正确方法是:

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

对于您的代码,您必须更改:

var tiledViewsStack = [AnyObject]()

使用类似我的示例的代码,或者您根据注释中的建议修改具有指定类(如UIImageView)的AnyObject类。