"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]()
。
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]()
。