【问题标题】:Error message appears when using super.init()使用 super.init() 时出现错误信息
【发布时间】:2019-02-15 16:47:16
【问题描述】:

从最近开始,我一直在尝试遗传。此后GameViewController.swift中出现如下错误:Cannot convert value of type 'CGSize' to expected argument type 'NSCoder'

GameViewController.swift

    class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let scene = GameScene(coder: self.view.bounds.size) //here is the error
        let skview = self.view as! SKView
        skview.showsFPS = true
        skview.showsNodeCount = true
        skview.showsPhysics = false

        skview.presentScene(scene)

    }

}

我将非常感谢任何答案,因为我已经坐在这个问题上几个小时了。

【问题讨论】:

  • 您的代码编译得很好,不会产生上述错误。你应该edit你的问题,实际代码以minimal reproducible example的形式产生错误。
  • 我最好的猜测是您已经实现了init(coder:),并且正在使用不正确的参数调用super。如果您不打算从场景文件加载场景,您可以通过 fatalError("Unsupported") 调用来实现 init(coder:)
  • 另外,您获得否决票和接近票的原因是因为您显示的代码与您提到的错误完全无关。对于以后的问题,请确保发布导致错误的代码。你会得到更好的答案。
  • 我希望我能显示正确的代码
  • 那么当您使用CGSize 参数而不是NSCoder 调用GameScene(coder:) 时,您期望会发生什么?

标签: swift sprite-kit


【解决方案1】:

我已经检查了你的代码,你需要删除

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

来自您的 GameScene.swift 文件。

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2014-04-12
    相关资源
    最近更新 更多