2016-04-10 7 views
2

tiledViewsStack enthält UIImageViews. Ich versuche, jedem UIImageView im Array eine neue Mittelkoordinate zu geben. Nicht sicher, warum ich immer diese Fehlermeldung für die letzte Zeile in der for-Schleife ... enter image description here"Kann nicht zuweisen Eigenschaft:" any "ist unveränderbar" Fehler

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' und 'any.center'? – Lumialxk

+0

Ugh ja, ändere 'var tiledViewsStack = [AnyObject]()' to 'var tiledViewsStack = [UIImageView()' danke @Lumialxk –

+1

Ich habe 'tiledViewsStack = [UIImageView]()' geändert und bekomme diesen Fehler nicht. – Lumialxk

Antwort

1

Benötigt, um tiledViewsStack einen Stapel von UIImages, nicht AnyObjects. Geändert von var tiledViewsStack = [AnyObject]() zu var tiledViewsStack = [UIImageView]().

0

Wenn Sie ANYOBJECT verwenden, verwenden Sie ein Protokoll.

Es kann ein beliebiger Typ sein. So AnyObject kann ein Int, ein Float, eine Zeichenfolge, eine UIView, alles darstellen. Das Array [AnyObject] ist ein unspezifischer Typ, der einen beliebigen Typ von Klasse darstellt. In Sie Sie immer unveränderlich Array Code initialisiert werden, und wenn Sie versuchen, jedes Element Sie den Fehler zu ändern ..

Der richtige Weg, um eine Art dieses Arrays zu deklarieren und zu initialisieren ist:

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

Für

var tiledViewsStack = [AnyObject]() 

wie mein Beispiel mit einem Code, oder Sie ANYOBJECT Klasse mit einer angegebenen Klasse wie UIImageView ändern, wie in den Kommentaren zu empfehlen: Sie Code, müssen Sie ändern.

Verwandte Themen