斯威夫特错误:“找不到接口声明‘SKScene’的父”

问题描述:

声明:我通过在这样类似的问题看,无法找到一个解决我的问题。斯威夫特错误:“找不到接口声明‘SKScene’的父”

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

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

我做了什么:

  1. 新增SpriteKit.Framework通过转到项目 - >构建阶段 - > 链接二进制与图书馆。
  2. 我创建了一个swift类,并且它从SKScene继承了 。

这是新类:

import SpriteKit 

class SnowScene: SKScene { 
} 

注意的是,类不是在代码中其他地方引用。

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

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

有没有人有任何想法我做错了什么,以及如何绕过这个问题?

+1

你忘了输入SpriteKit吗?您自己的模块中的类不需要导入,但框架可以。 – geraldWilliam

+0

我没有忘记 - 抱歉忽略这么明确地表达。添加到原来的问题。 –

我假设你在源文件中没有import SpriteKit或者你会得到的斯威夫特编译阶段的错误。

这听起来像一个雨燕臭虫,它不能正确检测到您使用SpriteKit。通常情况下,检测到这些依赖关系,并在-Swift.h在进口部分顶部插入,左右线88:

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

如果SpriteKit不在列表中,你正在寻找一个编译器错误,并应提交雷达与苹果。

如果你有一个桥接头,你会发现这些进口低于右边是:

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

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

包括你的桥接报行#import <SpriteKit/SpriteKit.h>将确保SpriteKit被宣告你的课前导入。

+1

将SpriteKit导入添加到桥接头文件确实解决了问题!谢谢! @import SpriteKit在列表中。 –