免责声明:我在SO上阅读了类似的问题,无法找到问题的解决方案。
我想将一个SKScene的子类添加到以前没有使用SpriteKit的项目中。
该项目是ObjC和Swift的混合体。子类是用Swift编写的。
我做了什么:
这是新课程:
import SpriteKit
class SnowScene: SKScene {
}
请注意,该类不是代码中任何其他位置的引用。
当我编译我的应用程序时,我在标题中收到错误。错误发生在我的-Swift.h文件中,该文件自动导出新类(我不知道为什么)。
SWIFT_CLASS("_TtC11MyCoolApp9SnowScene")
@interface SnowScene : SKScene
@end
有谁知道我做错了什么以及如何规避这个问题?
答案 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。