"Cannot assign to property: "任何“是不可变的”错误

"Cannot assign to property: "any" is immutable" error

tiledViewsStack 包含 UIImageView。我试图给数组中的每个 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
    }

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

它可以是任何类型的实例。 所以 AnyObject 可以表示一个 Int、一个 Float、一个 String、一个 UIView,任何东西。

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

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

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

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

var tiledViewsStack = [AnyObject]()

使用像我的示例一样的代码,或者您使用指定的 class 修改 AnyObject class,如评论中推荐的 UIImageView。

需要制作 tiledViewsStack 一堆 UIImage,而不是 AnyObject。将 var tiledViewsStack = [AnyObject]() 更改为 var tiledViewsStack = [UIImageView]()