2016-04-10 2 views
2

tiledViewsStack содержит UIImageViews. Я пытаюсь дать каждому UIImageView в массиве новую координату центра. Не знаю, почему я получаю эту ошибку в последней строке для цикла ... 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

'AnyObject' и' any.center'? – Lumialxk

+0

Ugh yes, change 'var tiledViewsStack = [AnyObject]()' to 'var tiledViewsStack = [UIImageView()' thanks @Lumialxk –

+1

Я изменил 'tiledViewsStack = [UIImageView]()' и я не получу эту ошибку. – Lumialxk

ответ

1

Необходимо сделать tiledViewsStack стек UIImages, а не AnyObjects. Изменено var tiledViewsStack = [AnyObject]() по var tiledViewsStack = [UIImageView]().

0

При использовании Anyobject, вы используете протокол.

Это может быть любой тип. So AnyObject может представлять собой Int, Float, String, UIView, что угодно.

Массив [AnyObject] - неспецифический тип для представления любого типа класса. В коде вы вы инициализации всегда неизменный массив, и при попытке изменить каждый элемент вы получите ошибку ..

Правильный способ объявить и инициализировать тип этого массива:

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

Для ваш код, вы должны изменить:

var tiledViewsStack = [AnyObject]() 

с кодом, как мой пример вверх, или изменить AnyObject класс с указанным классом, как UIImageView, как это рекомендовано в комментариях.

Смежные вопросы