2015-04-17 115 views
6

嘗試設置CAShapeLayer的zPosition時出現錯誤。下面的代碼:無法將CGFloat類型的值分配給CGFloat類型的值

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

出於某種原因,我得到這個錯誤:Cannot assign a value of type CGFloat to a value of type CGFloat!。出於某種原因,錯誤與可選。我在網上看過其他的例子,沒有任何投射(zPosition = 1),所以我不知道這裏有什麼問題。

謝謝!

回答

6

一個CALayersublayers屬性定義爲[AnyObject]!。當你的下標爲...sublayers[l]時,你會得到一個AnyObject,當然,它沒有可設置的屬性zPosition。您需要返回AnyObject向下轉換與CALayer,例如

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

而且,你也不需要解開sublayers(下標前),因爲它聲明瞭!,因此隱式,自動解包。

最後,您引用的錯誤消息顯示爲錯誤複製,因爲它是無意義的。

+0

哎呀,錯誤複製。我修好了它。 –

0

子層被定義爲AnyObject的可選數組。因此你必須打開子層。下面應該工作:

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

這沒有奏效。同樣的錯誤。 –

+0

是的..你說對了,對不起。 @GoZoner說得對=) – vguerra

+0

不用擔心!感謝您花時間回答。 –

相關問題