尝试在 Swift 项目中使用 Objective C 可可豆荚,桥接文件编译为 Swift 代码

Posted

技术标签:

【中文标题】尝试在 Swift 项目中使用 Objective C 可可豆荚,桥接文件编译为 Swift 代码【英文标题】:Trying to use Objective C cocoa pod in Swift project, bridging file compiled as Swift code 【发布时间】:2016-10-10 22:07:01 【问题描述】:

我正在尝试在基于 Swift 的 ios 项目中使用基于 C 的客观可可豆荚 (GCM)。我安装了可可豆荚,并手动创建了一个桥接文件,将其作为桥接文件添加到构建首选项中。问题是当我编译时,bridge.h 文件被编译为 Swift(显然它应该是目标 C)。更明确地说,included.h 文件中的所有行都在抛出错误,而不是桥接文件本身。这是我的桥接文件

#ifndef bridge_h
#define bridge_h
#import <GoogleCloudMessaging.h>

#endif /* bridge_h */

知道出了什么问题以及为什么导入的代码不被视为 Objective C 吗?

【问题讨论】:

【参考方案1】:

在同事的帮助下,我们想通了 - 桥接文件必须包含 Foundation/Foundation.h 并且必须在包含其他任何内容之前这样做。否则编译失败。

【讨论】:

【参考方案2】:

选择文件后,您可以在文件检查器中检查和更改文件类型。看看是不是objective-c header。

【讨论】:

我想过这个,但它实际上不是一个选项。唯一的标头选项是 C 标头(默认,以及我正在使用的)。 Objective-c 选项是源代码和预编译的源代码。两者都不起作用。

以上是关于尝试在 Swift 项目中使用 Objective C 可可豆荚,桥接文件编译为 Swift 代码的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 项目中使用 Objective C 类中的 Swift 类

swift项目中swift和objective-C之间的双向通信

swift项目中swift和objective-C之间的双向通信

在同一个项目中同时使用 Realm Swift 和 Realm Objective-C

如何将 RxSwift 用于 Objective-C 和 Swift 项目?

Swift SKScene 在 Objective-C 项目中显示为空白