Xcode 6.1 Swift问题 - 'init()'不可用:被-[NSObject init]的导入所取代

14

我刚把我的Xcode升级到了6.1,现在遇到一个奇怪的编译错误。

'init()'不可用:被-[NSObject init]导入所替代

我正在对SCNNode进行子类化,并且在定义与自己相同类型的其他类时使用了可选引用。例如:

import UIKit
import SceneKit

    class BayNode: SCNNode {

        var leftBay:BayNode?
        var rightBay:BayNode?


        func addLeftBay()
        {

            leftBay = BayNode()   // 'init()' is unavailable: superseded by import of -[NSObject init]

        }


    }

有谁知道我如何解决这个问题。

非常感谢


不相关的提示:如果您遵循Swift命名约定,例如使用首字母大写的类型名称,而不是 bayNode这样的名称,它将有助于其他人(包括SO的语法高亮器)阅读您的代码。 - rickster
嗨,Rickster,下次我会做的;-)。我在这里还很新。 - BassetMan
1个回答

13

我有同样的问题,我发现抑制错误的一种方法是显式地进行类型转换:

leftBay = BayNode() as BayNode

谢谢Alex,我已经尝试过这个方法,它非常好用。它的表现与Xcode 6.01相同。有人知道为什么会这样吗?或者能够解释一下这个变化的原因吗? - BassetMan
可能是类型检查中的一个错误。请在Apple上报告此问题,以帮助加快修复速度。 - rickster
1
这不是一个 bug,而是语言内部更严格的类型检查所带来的后果。 - FractalDoctor
确实是一个 bug,在 Swift 1.2(Xcode 6.3 beta 2)中已经修复。 - Alex-alex
2
@Alex-alex 我在 Swift 2.0 (Xcode 7) 中也遇到了同样的错误。 - Alexander Khitev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接