bridge -swift.h 文件突然消失

bridge -swift.h file abruptly disappeared

我正在 objective_c 项目中导入一个 swift 文件,并通过使用 @objc 标记 Swift class 并导入 projectname-swift .h 在与之通信的文件中。 然而我已经一个月没有编译它了,现在,当我尝试编译时,编译器抱怨它没有找到包含文件,所以 Swift class 也是如此。我什至尝试编译旧版本,但我遇到了同样的问题。也许 Xcode 或我的安装有一些变化。 ! 我可以做些什么来恢复这种情况? !

我发现 DerivedSources 目录中没有任何内容。我什至尝试删除完整的 DerivedData 文件夹,但它在 DerivedSources 仍然为空的情况下重建了它。

问题是您正在尝试导入名为 "iPuja-Swift.h" 的内容,但这是错误的名称。您的项目名为 iPuja Pro,自动生成的 Swift-to-Objective-C 桥接 header 是基于此命名的。您忘记了 "Pro" 部分。

如果您对这个桥接的名称有疑问 header,请深入到 Derived Data 中 Intermediates 文件夹中的内置应用程序并查看它。这是您需要匹配的名称。这是一个终端命令,它应该找到所有相关的 header,以便您可以看到它们的名称:

$ find ~/Library/Developer/Xcode/DerivedData -name "*Swift.h"

这是典型应用程序的屏幕截图;如您所见,我必须执行此检查,因为 header 名称是以一种巧妙的方式从项目名称派生而来的:

我知道这是一个旧话题,但无论如何:有同样的问题。该文件一直在那里,然后突然消失了。 原来是 swift 文件之一的一个简单错误导致该文件无法编译;但是,该错误从未出现在错误列表中;相反,有许多关于文件 "projectname-Swift.h" 不存在的投诉。

修复了 swift 文件,以便它可以编译等:"projectname-Swift.h" 再次返回

这是Apple的一个坏把戏。 Swift 与它无关。当项目没有正确编译时,有时报告的错误会提到无法加载 Swift 模块。到目前为止,这种情况再也没有发生在我身上。