在桥接头中导入头文件导致的 Swift 编译器错误

Posted

技术标签:

【中文标题】在桥接头中导入头文件导致的 Swift 编译器错误【英文标题】:Swift Compiler Errors caused by Importing Header File in Bridging Header 【发布时间】:2017-04-01 23:41:48 【问题描述】:
    我的项目成功构建并运行。 我创建了一个桥接头,以便在我的 Swift 和 Objective-C 视图之间切换。 我在桥接头中导入了我的 Objective-C 头文件。 突然间,我导入的 Objective-C 头文件中有 40 个 swift 编译器错误。 (附图片了解详情)

Image

为什么会发生这种情况,我该如何解决?我的 ViewController.h 文件在我将其导入桥接头之前完美运行。

【问题讨论】:

您提供的信息非常少,任何人都可以根据这些信息做出回答。 1) 屏幕截图中的一个错误是 Objective C 错误,而不是 Swift。 2)除了桥接头之外,您是否在任何地方导入 ViewController.h? 3)如果您保留桥接头并注释掉 #import "ViewController.h" 是否有任何行为改变? 嗨。是的,我在头文件中执行了#import "ViewController.h",当我将其注释掉时,没有错误(项目构建良好)。 第二题呢? 另外,请分享 ViewController.h 的内容 pastebin.com/EVxPw8jj 错误发生在我定义常量的行上,说“预期';'在声明列表的末尾" 【参考方案1】:

要在 Objective C 头文件中定义常量,您需要执行以下操作:

// header file
FOUNDATION_EXPORT static CGFloat MyNamespaceAlpha;

// implementation file
static CGFloat MyNamespaceAlpha = 0.8f;

【讨论】:

以上是关于在桥接头中导入头文件导致的 Swift 编译器错误的主要内容,如果未能解决你的问题,请参考以下文章

在桥接头中导入不适用于特定的 Parse Facebook

在“发布”构建配置中看不到在桥接头中导入的头,但在“调试”构建配置中可见

使用 cocoapods 的 PayPal-iOS-SDK 在桥接头中引发错误

NS_ENUM 对象在桥接头文件中添加后无法编译

在集成 pod 文件之前放置在桥接头中的第 3 方代码该怎么办

未解析的标识符 - Swift 中的 Objective-C Pod