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

时间:2015-11-19 16:57:44

标签: ios objective-c swift sprite-kit

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

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

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

我做了什么:

  1. 转到项目时添加了SpriteKit.Framework - >构建阶段 - > Link Binary与Libraries。
  2. 我创造了一个快速的课程并且拥有它 继承自SKScene。
  3. 这是新课程:

    import SpriteKit
    
    class SnowScene: SKScene {
    }
    

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

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

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

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

1 个答案:

答案 0 :(得分:5)

我假设您在源文件中执行了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/SpriteKit.h>将确保在声明类之前导入SpriteKit。