2015-04-17 117 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

不用担心!感谢您花时间回答。 –

相关问题