无法将 CGFloat 类型的值分配给 CGFloat 类型的值

Cannot assign a value of type CGFloat to a value of type CGFloat

我在尝试设置 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),所以我不知道这里的问题是什么。

谢谢!

sublayers 定义为 AnyObject 的可选数组。因此,您必须展开子层。以下应该有效:

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

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

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

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

最后,您引用的错误消息似乎是错误复制的,因为它毫无意义。