猿问

类不实现其超类的必需成员

类不实现其超类的必需成员

所以我今天更新到Xcode 6 beta 5,并注意到我几乎所有Apple类的子类都收到了错误。

错误说明:

类'x'不实现其超类的必需成员

这是我选择的一个例子,因为这个类目前非常轻量级,因此很容易发布。

class InfoBar: SKSpriteNode  { //Error message here
    let team: Team
    let healthBar: SKSpriteNode

    init(team: Team, size: CGSize) {
        self.team = team        if self.team == Team.TeamGood {
            healthBar = SKSpriteNode(color: UIColor.greenColor(), size:size)
        }
        else {
            healthBar = SKSpriteNode(color: UIColor.redColor(), size:size)
        }
        super.init(texture:nil, color: UIColor.darkGrayColor(), size: size)

        self.addChild(healthBar)

    }}

所以我的问题是,为什么我收到此错误,我该如何解决?我没有实施什么?我正在打电话给指定的初始化程序。


千万里不及你
浏览 571回答 3
3回答

陪伴而非守候

来自开发者论坛上的Apple员工:“向编译器和构建的程序声明你真的不希望与NSCoding兼容的一种方法是做这样的事情:”required init(coder: NSCoder) {   fatalError("NSCoding not supported")}如果您知道您不希望符合NSCoding,则可以选择此选项。我已经使用了很多我的SpriteKit代码,因为我知道我不会从故事板中加载它。您可以采用的另一个选项是将方法实现为便利init,如下所示:convenience required init(coder: NSCoder) {     self.init(stringParam: "", intParam: 5)}请注意调用初始化程序self。这允许您只需要为参数使用虚拟值,而不是所有非可选属性,同时避免抛出致命错误。第三种选择当然是在调用super时实现该方法,并初始化所有非可选属性。如果对象是从故事板加载的视图,则应采用此方法:required init(coder aDecoder: NSCoder!) {     foo = "some string"     bar = 9001     super.init(coder: aDecoder)}
随时随地看视频慕课网APP
我要回答