Obj-C 的 Swift 桥接头

Posted

技术标签:

【中文标题】Obj-C 的 Swift 桥接头【英文标题】:Swift Bridging Header for Obj-C 【发布时间】:2015-11-23 01:03:50 【问题描述】:

我已经通过CocoaPods 安装了Card.IO。我的工作区看起来设置正确,我看到了 Card.IO Objective-C 头文件,但是当在我的主要 Swift 项目中,我尝试引用任何 Card.IO 类时 - 我得到未解决的标识符错误.

编辑我的理解是Xcode找不到桥接头:

#import "CardIO.h"

@import AudioToolbox;
@import AVFoundation;
@import CoreMedia;
@import CoreVideo;
@import MobileCoreServices;

文档说明

在 Build Settings 中,在 Swift Compiler - Code Generation 中,确保 Objective-C Bridging Header 下的构建设置具有指向 桥接头文件。 该路径应该与您的项目相关,类似于在 Build Settings 中指定 Info.plist 路径的方式。大多数情况下, 您应该不需要修改此设置。

这对我来说没有意义 - 所以不确定在哪里放置路径?我已将以下内容添加到 Build Settings > Search Paths > Header Search Paths > Debug & Release

MyApp/MyApp-Bridging-Header.h

但这似乎不正确?

【问题讨论】:

您是否在桥接头中添加了 .h 文件? 我已将它们的桥接头的内容复制到一个 .h 文件中。这仅具有框架的导入,并不能解决问题。 GitHub页面上的步骤也只是说通过可可豆荚安装 - 不需要其他步骤。 1:CocoaPods 不同于普通的 xCode 项目。 (通过 card-io 的自述文件) 2:您需要创建自己的桥接头并导入 .h 文件,如 SampleApp-Swift 示例。 (不要在项目中复制整个桥接头文件。) 我已经用我添加的桥接头更新了问题 - 仍然没有解决 @SaqibOmer 并不总是 ;) 只需使用 use_frameworks! 【参考方案1】:

在这里找到答案

https://bohemianpolymorph.wordpress.com/2014/07/11/manually-adding-a-swift-bridging-header/

在您的项目构建设置中,找到 Swift Compiler – Code Generation,然后在 Objective-C Bridging Header 旁边添加项目根文件夹中桥接头文件的路径。因此,如果文件位于项目根文件夹中,则可以通过 MyProject/MyProject-Bridging-Header.h 或简单地通过 MyProject-Bridging-Header.h。

【讨论】:

以上是关于Obj-C 的 Swift 桥接头的主要内容,如果未能解决你的问题,请参考以下文章

将 Obj-C 桥接到 Swift 后缺少啥

Flurry 的正确桥接头是啥?

Flurry 的正确桥接头是啥?

Xcode中如何快速创建一个Objc与Swift桥接的头文件

在 Swift 中使用 Obj-C 类扩展?

在 Swift 中使用 Obj-C 类扩展?