这个答案解决了用例,您可能已经有了一些调用Swift类的Objective-C代码,然后您开始收到此错误。
如何解决问题
以下步骤最终为我解决了所有问题。我在上面读到有人提到“鸡和鸡蛋”,正是这个概念使我开始执行此程序。这一明确的过程表明,必须删除引用Swift类的所有Objective-C代码,直到生成标头之后。
- 在您的Objective-C实现文件中注释掉#import“ ProductModuleName-Swift.h”语句
- 注释掉Objective-C实现文件中对Swift类的任何引用
- 清洁与建造
- 解决所有错误/警告
- 删除对#import“ ProductModuleName-Swift.h”语句的注释
- 清理并构建(成功或修复所有剩余的错误,请确保您此时未在Objective-C中引用任何Swift类。如果这样,请暂时将其注释掉)
- 验证通过Cmd单击
“ #import“ ProductModuleName-Swift.h”语句的类名生成的“ ProductModuleName-Swift.h”
- 在Objective-C实现文件中删除引用Swift类的代码的注释。
- 正常进行清理和构建(应生成“ ProductModuleName-Swift.h”,并且可以正常使用引用Swift类的Objective-C代码)
Nota Bene:执行此过程时,上面给出的有关将空格更改为下划线并将“ Defines Module”更改为YES的答案在执行此过程时仍然适用,Apple文档中指定的规则也是如此。
桥接头路径
在一个错误中,在生成过程中找不到文件ProductModuleName-Bridging-Header.h。这个事实产生了一个错误
<未知>:0:错误:桥接头'/Users/Shared/Working/abc/abc-Bridging-Header.h'不存在
仔细检查该错误表明该文件永远不会存在于描述的位置,因为它实际上位于(错误的路径)
'/Users/Shared/Working/abc/abc/abc-Bridging-Header.h'。快速搜索目标/项目构建设置以手动进行更正,并且再次自动生成abc-Swift.h文件。