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 桥接头的主要内容,如果未能解决你的问题,请参考以下文章