【问题标题】:Swift error: "Cannot find interface declaration for 'SKScene', superclass of"Swift 错误:“找不到 'SKScene',超类的接口声明”
【发布时间】:2015-11-19 16:57:44
【问题描述】:

免责声明:我阅读了关于 SO 的类似问题,但找不到解决问题的方法。

我想将 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

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

【问题讨论】:

  • 你忘记import SpriteKit了吗?您自己的模块中的类不需要导入,但框架需要。
  • 我没有忘记 - 很抱歉没有明确地说出来。添加到原始问题。

标签: ios objective-c swift sprite-kit


【解决方案1】:

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

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

#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 在您的类被声明之前被导入。

【讨论】:

  • 将SpriteKit导入添加到桥接头文件确实解决了问题!谢谢! @import SpriteKit WAS 在列表中。
猜你喜欢
  • 1970-01-01
  • 2014-01-10
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 2015-05-30
  • 2014-02-14
相关资源
最近更新 更多