ios - 致命错误:init(coder:) 尚未实现。运行时错误在哪里
问题描述
我不明白如何修复错误。如果有人明白请帮忙!
class GameScene: SKScene {
let player = SKSpriteNode(imageNamed: "playerShip")
let bulletSound = SKAction.playSoundFileNamed("bulletSound.wav", waitForCompletion: false)
var gameArea: CGRect
override init(size: CGSize)
{
let maxAspectRatio: CGFloat = 16.0/9.0
let playableWidth = size.height/maxAspectRatio
let margin = (size.width - playableWidth)/2
gameArea = CGRect(x: margin, y: 0, width: playableWidth, height: size.height)
super.init(size: size)
}
required init?(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}
我正在尝试为屏幕上的对象设置边界。当我写的时候super.init(size: size)
,Xcode 自动创建了 required init?(coder aDecoder: NSCoder)
,但是当它运行时我得到了以下错误:
线程 1:致命错误:init(coder:) 尚未实现
解决方案
与 oaccamsrazor 状态一样,如果您向类中添加初始化程序,您还必须在超类中实现任何必需的初始化程序。您点击的事实init?(coder aDecoder: NSCoder)
表明init(size: ...)
没有被调用,可能是因为您正在从.sks
文件创建场景。
init?(coder aDecoder: NSCoder)
从文件创建场景时会被调用.sks
,所以你不能在fatalError()
那里。基本上,如果您有任何要初始化的内容,只需实际实现您的初始化程序。否则,删除所有初始化程序,拥有的要求init?(coder aDecoder: NSCoder)
就会消失。
推荐阅读
- go - 如何获取 UDP 连接的真实本地地址
- istio - Istio 问题,pilot-discovery 命令在哪里?
- scala - 反序列化 Scala 对象时出现 java.lang.ClassCastException
- javascript - 如何在 HTML 和 JavaScript 中初始化 firebase
- arrays - 我的主要功能不允许我输入任何输入并在一段时间后崩溃
- java - Spring-Boot java.lang.NullPointerException: null at javax.el.CompositeELResolver.add(CompositeELResolver...
我正在尝试构建一个基本的 Spring-Boot 应用程序。我在控制器中使用 javax.validation。它将 EL 标记识别为 <c:out value="X" />,但是
- c# - 无法反序列化嵌套 JSON 列表中的数据
- mysql - 如何在mysql中以双条件顺序对表数据进行排序
- java - 在 intellij IDEA 中生成 hibernate.reveng.xml 文件
- python - 如何训练具有一个输出和多个 y_true 的 keras 模型?