【问题标题】:Objective-C Bridging Header for frameworks框架的 Objective-C 桥接头
【发布时间】:2014-09-10 13:04:02
【问题描述】:

我制作了一个需要 sqlite3 框架的框架。如何为将 sqlite3 导入 Swift 文件的框架添加 Objective-C 桥接头?

我的项目已经有一个桥接头文件,但我的框架没有。

【问题讨论】:

    标签: swift ios8 xcode6 bridging-header


    【解决方案1】:

    我在目标构建设置中发现了一个Objective-C Bridging Header 设置。默认情况下它是隐藏的。检查全部而不是基本。

    在最近的 Xcode 版本中,此解决方案会给出错误 Using bridging headers with framework targets is unsupported

    我一直在使用的解决方法是在文件检查器中将 C-header public 导入到MyFramework.h 中,如下例所示:

    #import <MyFramework/MyObjectiveC.h>
    

    如何将 C-header 更改为 public

    打开您的 C-header 并通过单击右上角的来查看检查器。要查看文件检查器,请单击右上角的文件图标。

    【讨论】:

    • 这导致我出现错误“不支持使用带有框架目标的桥接头”。实际答案是这个stackoverflow.com/questions/24875745/…
    • 您能否详细说明如何“在文件检查器中公开 C-header”?
    • 您好 Gustaf,感谢您的快速回复。我正在尝试将 Objective C 第三方框架导入到我的 Swift 框架中,但出现“没有这样的模块”错误。我可以从 objc 代码中使用该框架,但不能从我正在创建的框架中的 swift 代码中使用该框架。我知道这可能是一个不同的问题。
    • 对不起@Ravi,但我不能帮你。您可以尝试检查框架是否已链接到您的目标中,我不知道还有什么可以帮助的。
    • 我找到了解决方案。 @GustafRosenblad,您需要创建 xxx.modulemap,设置“导入路径”以导入您的模块映射。 modulemap 文件应如下所示: module OCModule [system] { header "System Services/SystemServices.h" header "networking/Reachability/Reachability.h" export * }
    【解决方案2】:

    只需将您的 sqlite3 框架导入到您的 Objective-C 桥接文件中。然后你就可以自动在 Swift 中使用它了。

    Apple 文档:

    互操作性是 Swift 和 Objective-C 之间双向交互的能力,让您可以在另一种语言的文件中访问和使用以一种语言编写的代码片段。当您开始将 Swift 集成到您的应用程序开发工作流程中时,最好了解如何利用互操作性来重新定义、改进和增强您编写 Cocoa 应用程序的方式。 互操作性的一个重要方面是它允许您在编写 Swift 代码时使用 Objective-C API。导入 Objective-C 框架后,您可以从中实例化类并使用原生 Swift 语法与它们进行交互。

    编辑:您甚至可以使用

    import yourFramework

    将 Objective-C 框架或 Swift 框架或混合语言框架导入到您的 swift 文件中

    Apple 文档:

    导入外部框架

    您可以导入具有纯 Objective-C 的外部框架 代码库、纯 Swift 代码库或混合语言代码库。这 导入外部框架的过程是否相同 框架是用一种语言编写的或包含来自这两种语言的文件 语言。导入外部框架时,请确保 为您要导入的框架定义模块构建设置 是。

    你可以将一个框架导入到不同的 Swift 文件中 使用以下语法定位目标:

    SWIFT

    import FrameworkName
    

    您可以将框架导入到任何 Objective-C .m 文件中 使用以下语法的不同目标:

    @import FrameworkName;
    

    【讨论】:

    • 框架中不允许使用桥接头。在框架中遵循上述说明将在构建时产生上述错误:error: using bridging headers with framework targets is unsupported
    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多