Swift默认重载不可用-找不到SCNReferenceNode(named:)

时间:2019-03-20 22:27:05

标签: swift overloading scenekit arkit scnnode

我对Xcode比较陌生。

想知道具有相同代码的两个文件如何产生两个截然不同的生成结果。第一个是从Apple的“创建基于面部的AR体验”示例代码中下载的,第二个是我的项目的实现。我已经尽力想了一切;重建,清洁,重新安装,重新启动...。即使从Apple示例中复制了准确​​的代码(如图所示),仍然失败。似乎是一个错误,导致SCNReferenceNode在我的项目中无法正常工作(右侧)。这两个文件的工作都比较早。我尝试用与SCNReferenceNode(url: )结合的Bundle.main.url(forResource: withExtension: )替换代码,并显示相同的错误。它可能是相关的;加载项目时,似乎有些丢失的文档(在Xcode中以红色突出显示),尽管它们本身在物理文件中。我提供了并排比较的屏幕截图;如您所见,相同但仍然是错误。关于可能导致这种情况的任何想法?

屏幕截图:This is a side by side comparison of the Apple sample code and my code - now the same..

1 个答案:

答案 0 :(得分:1)

如果您查看Utilites.swift文件,Apple已为SCNReferenceNode添加了扩展名,其中添加了便捷的初始化功能。

extension SCNReferenceNode {
    convenience init(named resourceName: String, loadImmediately: Bool = true) {
        let url = Bundle.main.url(forResource: resourceName, withExtension: "scn", subdirectory: "Models.scnassets")!
        self.init(url: url)!
        if loadImmediately {
            self.load()
        }
    }
}