gpt4 book ai didi

ios - Swift: "Must call a designated initializer of the superclass"错误,即使代码正在这样做

转载 作者:IT王子 更新时间:2023-10-29 05:49:56 27 4
gpt4 key购买 nike

目标是子类化 SCNNode。根据class docs , init(geometry geometry: SCNGeometry?) 是一个指定的初始化器(没有列出 convenience 关键字),所以这段代码不是调用其父类(super class)的指定初始化器吗?

为什么 Xcode 显示以下错误?

Must call a designated initializer of the superclass SCNNode

class PreviewNode: SCNNode {
// Constants
let PreviewNodeColor = gRedColor
let Size = CGFloat(1.0)
let ChamferRadius = CGFloat(0.0)

override init() {
let previewBox = SCNBox(width: Size, height: Size, length: Size, chamferRadius: ChamferRadius)
previewBox.firstMaterial!.diffuse.contents = PreviewNodeColor
previewBox.firstMaterial!.transparency = 0.2
previewBox.firstMaterial!.specular.contents = UIColor.whiteColor()
super.init(geometry: previewBox)
}
}

最佳答案

问题在于您还试图在调用 self.init() 之前访问您的 PreviewNode 属性

像这样尝试:

Xcode 8 GM • Swift 3

class PreviewNode: SCNNode {
let previewNodeColor: UIColor = .red
let size: CGFloat = 1
let chamferRadius: CGFloat = 0
convenience override init() {
self.init()
let previewBox = SCNBox(width: size, height: size, length: size, chamferRadius: chamferRadius)
previewBox.firstMaterial?.diffuse.contents = previewNodeColor
previewBox.firstMaterial?.transparency = 0.2
previewBox.firstMaterial?.specular.contents = UIColor.white
self.geometry = previewBox
}
}

关于ios - Swift: "Must call a designated initializer of the superclass"错误,即使代码正在这样做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com