无法将CGFloat类型的值赋给CGFloat类型的值

时间:2015-04-17 18:41:37

标签: swift casting calayer

尝试设置CAShapeLayer的zPosition时出错。这是代码:

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

出于某种原因,我收到此错误:Cannot assign a value of type CGFloat to a value of type CGFloat!。出于某种原因,错误是可选的。我已经看到其他在线完成的示例没有任何演员(zPosition = 1),所以我不知道这里有什么问题。

谢谢!

2 个答案:

答案 0 :(得分:7)

sublayers的{​​{1}}属性定义为CALayer。当您下标为[AnyObject]!时,您得到...sublayers[l],当然,它没有AnyObject的可设置属性。您需要将返回的zPosition向下转换为AnyObject,例如

CALayer

此外,您不需要打开if let layer = self.view.layer.sublayers[l] as? CALayer { layer.zPosition = CGFloat(1) } (在订阅之前),因为它是使用sublayers声明的,因此会隐式地自动解包。

最后,您引用的错误消息似乎被错误复制,因为它是荒谬的。

答案 1 :(得分:1)

子图层被定义为AnyObject的Optional数组。因此,您必须打开子层。以下应该有效:

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