我制作了一个需要 sqlite3 框架的框架。如何为将 sqlite3 导入我的 Swift 文件的框架添加一个 Objective-C 桥接头?
我的项目已经有一个桥接头文件,但我的框架没有。
我制作了一个需要 sqlite3 框架的框架。如何为将 sqlite3 导入我的 Swift 文件的框架添加一个 Objective-C 桥接头?
我的项目已经有一个桥接头文件,但我的框架没有。
我Objective-C Bridging Header
在目标构建设置中找到了一个设置。默认情况下它是隐藏的。检查全部而不是基本。
在最近的 Xcode 版本中,这个解决方案会给出错误Using bridging headers with framework targets is unsupported
。
我一直在使用的解决方法是在文件检查器中公开C-header并将其导入,MyFramework.h
如下例所示:
#import <MyFramework/MyObjectiveC.h>
如何将 C-header 更改为public
打开您的 C-header 并通过单击右上角的来查看检查器。要查看文件检查器,请单击右上角的文件图标。
只需将您的 sqlite3 框架导入您的 Objective-C 桥接文件。然后你就可以自动在 Swift 中使用它了。
苹果文档:
互操作性是在 Swift 和 Objective-C 之间进行双向交互的能力,让您可以在另一种语言的文件中访问和使用以一种语言编写的代码片段。当您开始将 Swift 集成到您的应用程序开发工作流程中时,最好了解如何利用互操作性来重新定义、改进和增强您编写 Cocoa 应用程序的方式。互操作性的一个重要方面是它允许您在编写 Swift 代码时使用 Objective-C API。导入 Objective-C 框架后,您可以从中实例化类并使用本机 Swift 语法与它们进行交互。
编辑:您甚至可以将 Objective-C 框架或 Swift 框架或混合语言框架导入到您的 swift 文件中
import yourFramework
苹果文档:
导入外部框架
您可以导入具有纯 Objective-C 代码库、纯 Swift 代码库或混合语言代码库的外部框架。无论框架是用一种语言编写的还是包含来自两种语言的文件,导入外部框架的过程都是相同的。导入外部框架时,请确保将要导入的框架的“定义模块”构建设置设置为“是”。
您可以使用以下语法将框架导入到不同目标中的任何 Swift 文件中:
迅速
import FrameworkName
您可以使用以下语法将框架导入到不同目标中的任何 Objective-C .m 文件中:
@import FrameworkName;