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

Sha*_*ngh 7 casting calayer swift

我在尝试设置a的zPosition时遇到错误CAShapeLayer.这是代码:

self.view.layer.sublayers[l].zPosition = CGFloat(1)
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

GoZ*_*ner 7

a的sublayers属性CALayer定义为[AnyObject]!.当你...sublayers[l]得到一个下标时AnyObject,可以肯定的是,它没有可设置的属性zPosition.例如,您需要将返回的内容向下转换AnyObjectCALayerwith

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

此外,您不需要打开sublayers(在下标之前),因为它是声明的,!因此隐式地,自动解包.

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