Swift错误:“无法找到’SKScene’的接口声明,超类”

免责声明:我在SO上阅读了类似的问题,找不到我的问题的解决方案。

我想将一个SKScene的子类添加到以前没有使用过SpriteKit的项目中。

该项目是ObjC和Swift的混合体。 子类是用Swift编写的。

我做了什么:

  1. 通过转到项目 – >构建阶段 – >链接二进制文件库添加SpriteKit.Framework。
  2. 我创建了一个快速类,并inheritance自SKScene。

这是新课程:

import SpriteKit class SnowScene: SKScene { } 

请注意,该类不是代码中任何其他位置的引用。

当我编译我的应用程序时,我在标题中得到错误。 错误发生在我的-Swift.h文件中,该文件自动导出新类(我不知道为什么)。

 SWIFT_CLASS("_TtC11MyCoolApp9SnowScene") @interface SnowScene : SKScene @end 

有谁知道我做错了什么以及如何规避这个问题?

我假设您在源文件中import SpriteKit ,否则您将在Swift编译阶段遇到错误。

这听起来像Swift中的一个错误,它没有正确检测到您正在使用SpriteKit。 通常,在第88行的导入部分中检测并插入这些依赖项并将其插入-Swift.h的顶部:

 #if defined(__has_feature) && __has_feature(modules) @import Foundation; @import UIKit; @import ObjectiveC; ... #endif 

如果SpriteKit不在该列表中,那么您正在查看编译器错误,并且应该向Apple提交雷达。

如果您有一个桥接标题,您会注意到这些导入正下方是:

 #import "/Users/.../...-Bridging-Header.h" 

如果没有,你应该添加一个。 我相信添加一个Objective-C文件将触发Xcode为您完成工作。

在桥接头中包含#import 行将确保在声明类之前导入SpriteKit。