【问题标题】:Swift "Bridging-Header.h" file not allowing me to instantiate objective-c classes in .swift filesSwift“Bridging-Header.h”文件不允许我在 .swift 文件中实例化 Objective-C 类
【发布时间】:2014-07-28 22:29:36
【问题描述】:

当 X-code 尝试自动创建桥接头时,它每次都会崩溃,所以我按照有关如何手动创建桥接头的说明进行操作。 (创建一个.h文件,命名为-Bridging-Header.h,导入你需要的所有.h文件?)

问题是,当我尝试在包含在该标题中的 .swift 文件中实例化一个类时,什么也没有发生(它说该类不存在)另外,在桥接头中它似乎没有自动完成我的当我尝试包含它们时文件名,导致我相信某些东西没有正确链接。

有人遇到过这种情况吗?有人知道怎么解决吗?

【问题讨论】:

  • 尝试退出 Xcode 并重新打开它。
  • 我也有同样的问题。 :-/

标签: ios objective-c xcode swift xcode6


【解决方案1】:

您需要将其添加到目标的构建设置中:

  1. 在 Xcode 中,如果您进入目标的构建设置,并一直向下滚动,您会发现“Swift 编译器 - 代码生成”部分。

  2. 将“Objective-C 桥接头”设置为<#PROJECT_NAME>-Bridging-Header.h

  3. 我不确定“Install Objective-C Compatibility Header”的正确值,但它是一个是/否,所以如果它一开始不起作用,你可以切换它。

【讨论】:

  • “是”似乎没问题。
  • 这帮助我知道当 FMDB 不起作用时在哪里删除桥接头。
  • 我遇到了一个奇怪的问题,它试图加载一个找不到的桥接头,所以我删除了这个键中的值并且它起作用了
  • 在 Xcode 8 中 - 而不是“代码生成”,而是在“Swift 编译器-常规”中
  • 那行得通。我想知道如果说我在 objc 中有 A、B、C 类。我现在只想将 C 类转换为 swift。现在 C 类依赖于 A n B,因此它们进入桥接头。虽然 A 类需要 C 类。现在我无法在 A 中导入 -Swift.h,因为桥接头中存在 A,这会产生明显的错误。除了转换 A 类和 B 类之外的任何解决方案也因为它们是大类。
【解决方案2】:

我尝试自己创建一个桥接头,但由于某种原因 Xcode 不喜欢它。 所以我删除了我的自定义文件,导入了一个 Obj C 文件,这让 Xcode 询问我是否希望它为我创建一个。

我点击是,它成功了!

【讨论】:

  • 你是如何导入 ObjC 文件的?在构建设置里面还是在哪里?
【解决方案3】:

它可以帮助将桥接头的名称及其项目根设置为“MyProject/MyProject-Bridging-Header.h”到 Swift 编译器构建键“Objective-C 桥接头”的字符串值中

【讨论】:

    【解决方案4】:

    1) 创建一个名为“FMDB-Bridging-Header.h”的文件

    在此文件中键入以下内容: #import "FMDB.h"

    3) 转到构建设置 -> Swift 编译器 - 代码生成 - 添加到“Objective-C 桥接头”:FMDB-Bridging-Header.h

    或者如果它被放置在您项目的文件夹中:

    文件夹名称/FMDB-Bridging-Header.h

    【讨论】:

    • 无需:“在此文件中键入以下内容:#import "FMDB.h""
    • 我不知道为什么这得到了反对票,它实际上帮助了我。我创建了一个桥接标头,但后来将它移到了我项目中的子目录中。项目构建设置没有反映更改,但这个答案帮助我找到了问题。
    【解决方案5】:
    1. 向您的项目添加一个名为“[your-project-name]-Bridging-Header.h 的头文件

    1. 转到构建设置 > 构建选项并将“嵌入的内容包含 Swift 代码”设置为“是”

    2. 转到构建设置 > 链接并将“@executable_path/Frameworks”添加到运行路径搜索路径

    立即构建您的项目!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 2015-01-17
      • 2016-04-10
      • 1970-01-01
      • 2018-07-04
      • 2016-04-25
      相关资源
      最近更新 更多