【问题标题】:How to import obj c framework into swift bridging header?如何将 obj c 框架导入到 swift 桥接头中?
【发布时间】:2016-08-11 10:27:40
【问题描述】:

在将框架头文件导入我的项目时,我总是发现问题。例如,我在这个截图上的小试验项目。导入 Facebook SDK 标头时我做错了什么?这是一个非常简单的步骤,但我无法找出它有什么问题。我什至像在 Facebook 开发者网站上那样一步一步地进行操作。

编辑:对不起,也许我不清楚。桥接头已设置,我已在构建设置中设置了桥接头位置路径。这就是它产生错误的原因,因为它包含在编译中。问题是在导入 Facebook SDK 和桥接头的当前设置下,我无法将 Facebook SDK 导入桥接头。

我尝试过的事情:

  • #import "FBSDKCoreKit/FBSDKCoreKit.h"
  • #import <FBSDKCoreKit/FBSDKCoreKit.h>
  • #import "FBSDKCoreKit.h"
  • #import <FBSDKCoreKit.h>
  • #import "FBSDKCoreKit.framework/FBSDKCoreKit.h"
  • #import <FBSDKCoreKit.framework/FBSDKCoreKit.h>

它们都不起作用(它们都会像屏幕截图一样产生错误,这意味着桥接头很好并且包含在编译中,但找不到我所指的头)。

【问题讨论】:

    标签: objective-c swift frameworks bridging-header


    【解决方案1】:

    制作一个 Obj C Bridging:File -> New -> Source -> Header File -> Name as AppName-Bridging-Header.

    添加以下内容(例如 SDWebImage):

      #ifndef AppName_AppName_Bridging_Header_h
            #define AppName_AppName_Bridging_Header_h
    
            #import <SDWebImage/UIImageView+WebCache.h>
            #import "UIImageView+WebCache.h"
            #endif
    
        or
    
     #import "UIImageView+WebCache.h"  
    

    注意:构建设置,在 Swift 编译器 - 代码生成中,确保 Objective-C Bridging Header 构建设置下具有桥接头文件的路径。 - 类似 testSD/testSD-Bridging-Header.h 或 testSD-Bridging-Header.h (打开项目文件夹并找到头文件路径)

    @Chen :在你的情况下,尝试添加“-ObjC”链接器标志。

    Select the project file from the project navigator on the far left side of the window.
    
    Select the target for where you want to add the linker flag.
    
    Select the “Build Settings” tab.Choose “All” to show all Build Settings.
    
    Scroll down to the “Linking” section, and double-click to the right of where it says “Other Linking Flags”.
    
    A box will appear, Click on the “+” button to add a new linker flag.
    Type “-ObjC” (no quotes) and press enter.
    

    【讨论】:

    • 对不起,我不清楚。桥接头已集成。我的意思是,我已经设置了 Objective-C 桥接头的路径。这就是 bridging-header.h 文件产生错误的原因,因为它包含在编译中。问题是,在导入 Facebook SDK obj C 标头和桥接头的当前设置下,我无法制定导入 Facebook SDK 的正确路径。我给出了 Facebook Core Kit SDK 的屏幕截图和里面的标题内容,我尝试调用 #import "FBSDKCoreKit/FBSDKCoreKit.h"#import &lt;FBSDKCoreKit/FBSDKCoreKit.h&gt; 不起作用。
    • 我也试过#import "FBSDKCoreKit.h"#import &lt;FBSDKCoreKit.h&gt;#import "FBSDKCoreKit.framework/FBSDKCoreKit.h"#import &lt;FBSDKCoreKit.framework/FBSDKCoreKit.h&gt;,它们都不起作用。
    • @ Chen:尝试添加“-ObjC”链接器标志。从窗口最左侧的项目导航器中选择项目文件。选择要添加链接器标志的目标。选择“构建设置”选项卡选择“全部”以显示所有构建设置。向下滚动到“链接”部分,然后双击“其他链接标志”的右侧。将出现一个框,单击“+”按钮添加新的链接器标志。输入“-ObjC”(不加引号)并按回车键。
    • 不用担心,我终于找到了问题所在。我需要为框架添加搜索路径,因为它不在同一个文件夹中。但是谢谢你的回答,它给了我一些见识! :)
    【解决方案2】:

    现在我找到了答案。问题是框​​架没有存储在项目文件夹中,而是存储在下载文件夹中。是的,Facebook 开发指南告诉我直接从下载框架的位置拖动框架,并且在导入时我没有选中“如果需要复制文件”复选框。从这个answer,我发现我需要填写框架基础文件夹的搜索路径才能让Xcode能够找到它。谢谢大家的回答。

    【讨论】:

      【解决方案3】:

      New File -> iOS Source -> Objective-C File -> Enter any (Example "abc") name -> Next, Create -> 将在顶部显示消息,选择 Create Bridging Header -> Delete abc.h -> 点击 ProjectName-Bridging-Header.h -> 导入 -> 完成。

      【讨论】:

      • 我已更新问题以使其更加清晰。请审查。谢谢。
      猜你喜欢
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2016-03-06
      • 2015-02-14
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多