2015-04-17 33 views
6

Występuje błąd podczas próby ustawienia pozycji zPozycja na CAShapeLayer. Oto kod:Nie można przypisać wartości typu CGFloat do wartości typu CGFloat

self.view.layer.sublayers[l].zPosition = CGFloat(1) 

Z jakiegoś powodu dostaję ten błąd: Cannot assign a value of type CGFloat to a value of type CGFloat!. Z jakiegoś powodu błąd dotyczy opcjonalnego. Widziałem inne przykłady online zrobione bez castingu (zPosition = 1), więc nie wiem, o co tu chodzi.

Dzięki!

Odpowiedz

6

majątku CALayersublayers jest zdefiniowany jako [AnyObject]!. Podczas indeksowania jako ...sublayers[l] otrzymujesz AnyObject, który, na pewno, nie ma ustawialnej właściwości zPosition. Trzeba spuszczonymi wracającą AnyObject do CALayer z, na przykład

if let layer = self.view.layer.sublayers[l] as? CALayer { 
    layer.zPosition = CGFloat(1) 
} 

Ponadto, nie trzeba rozpakować sublayers (przed indeksowanie), ponieważ jest zadeklarowana z ! a zatem w sposób dorozumiany, automatycznie rozpakowany.

Wreszcie, komunikat o błędzie, który cytujesz, wydaje się być błędnie skopiowany, ponieważ jest bezsensowny.

+0

Whoops, błędnie skopiowany. Naprawiłem to. –

0

podwarstwy są definiowane jako opcjonalna tablica obiektów AnyObject. Dlatego musisz rozwinąć podwarstwy. Poniższa powinno działać:

self.view.sublayers![l].zPosition = CGFloat(1) 
+0

To nie zadziałało. Ten sam błąd. –

+0

tak .. masz rację ... przepraszam za to. @GoZoner ma to prawo =) – vguerra

+0

Bez obaw! Dziękuję za poświęcenie czasu na odpowiedź. –

Powiązane problemy