【问题标题】:Swift to Objective-C header not created in Xcode 6Xcode 6 中未创建 Swift 到 Objective-C 标头
【发布时间】:2014-07-26 14:09:20
【问题描述】:

我最近一直在努力将 Swift 添加到现有项目中,以便在现实世界中进行尝试。

在项目中添加 Swift 源文件后,我对获取“Bridging Header”,即 Objective-C 到 Swift 没有任何问题。

但是应该公开标记为@objc 的Swift 类或ObjC 类的子类的*-Swift.h 头文件找不到 :-(

在我的主应用代码(仍然是 Objective-C)中,我没有看到任何关于如何使用 Swift 编写的新子类的具体说明。

我作为首席开发人员的应用程序有一个相当大的代码库(70.000 行),因此一次性转换它是不可能的。

【问题讨论】:

  • 是的。它实际上是在询问您需要在 XCode IDE 的哪个位置创建这个 Swift->ObjC headed,因为在将 Swift 代码添加到现有 ObjC 项目时“默认”不会发生这种情况。
  • @Popeye 我不同意。在这种情况下,如果您正在编辑文件并从命令行编译,您将不会看到此问题。问题在于代表您执行(或应该执行)的 IDE。这很可能与项目设置有关,这绝对是一个IDE功能
  • @Popeye From the docs (PDF)当你将 Swift 代码导入到 Objective-C 中时,你依赖于一个 Xcode 生成的头文件 文件来将这些文件公开给 Objective -C。(我的粗体字,Apple 的斜体字。)这显然是一个关于 Xcode 的一个特性的问题,它可以帮助你同时使用 Swift 和 Objective-C,这三个标签肯定是合适的。
  • 我确实在 gaige 和文档的帮助下解决了这个问题。而且我不只是扔掉标签:在这种情况下,头文件应该由 XCode 创建并且对 XCode 可见。不是,因此会产生错误。
  • @Popeye 没有任何错误陈述——我直接从第 46 页复制了这句话。你发现了一段相似但不同的段落,它或多或少地表达了相同的意思。

标签: objective-c xcode swift


【解决方案1】:

正在生成文件,但 Xcode 找不到它(我使用 Lou Zell 的回答来证明它正在生成)。

这是我对混合 ObjC/Swift 框架的修复(Xcode 9.2):

  1. 通过在 finder (TargetName-Swift.h) 中搜索,在 DerivedData 中找到预期生成的文件
  2. 将其拖到 XCode 中的项目中并UNCHECK复制文件。
  3. 在 XCode 中单击文件并打开 File Inspector(右侧面板上的第一个选项卡)。
  4. LocationRelative To Group 更改为 Relative To Build Products

前两个步骤应该可以让您很好地构建和使用您的项目,但后两个步骤允许它在其他计算机上工作(即在团队项目协作时它仍然可以工作)。

【讨论】:

  • 我在使用 Xcode 10.2.1 时遇到了同样的问题。我将 Swift 文件拉入一个大型的 Objective-C 项目,它创建了桥接头。但是,当我尝试导入“TargetName-MySwiftFile.h”时找不到它。我已按照上述步骤操作,并在 Swift 类名之前添加了 @objc 前缀。有人帮忙吗?我还对“TargetName-MySwiftFile.h”进行了本地搜索,但一无所获。提前致谢。
猜你喜欢
  • 1970-01-01
  • 2019-03-13
  • 2017-02-01
  • 2014-10-22
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
相关资源
最近更新 更多