测试项目中找不到XXX-Swift.h文件

7
我正在尝试在测试项目中的方法中调用“主”项目中的NSObject子类的方法。主项目的NSObject子类导入了“XXX-Swift.h”头文件(混合使用了SwiftObjective-C代码)。当运行主项目时,一切正常,但是当我运行测试并调用该子类的对象时,我会收到一个错误提示,说找不到Swift头文件的导入。
我猜测我可能错过了一些测试目标设置,但我不知道应该检查什么...我应该怎么做才能解决这个问题?
1个回答

17

前往Xcode项目 > 构建设置,并输入“header name”,您将获得以下选项:

enter image description here

确保存在一个名为:$(SWIFT_MODULE_NAME)-Swift.h的文件

然后在构建设置下键入“bridging header”,并确保“bridging-header.h”文件的路径正确。

enter image description here

修改:

1)确保您的“项目名称”中不包含空格 2)好的,“XXX-Swift.h”文件会生成在以下路径,因此您需要将该路径添加到单元测试 - 转到构建设置,键入“Header Search Paths”,并添加以下行:

"path/to/XXX-Swift.h"

"$(TARGET_TEMP_DIR)/../$(PROJECT_NAME).build/DerivedSources"

更多信息,请参考此链接:iOS - 运行Swift单元测试时出现“MyProject-Swift.h文件未找到”的错误


我已经在应用程序目标中设置了这些设置,并且在测试目标中将 Embedded Content Contains Swift Code 设置为 YES,但当我运行应用程序时它仍然可以工作,但当运行测试时会出现错误... - AppsDev
我仍然遇到错误... 我怎么能看到$(TARGET_TEMP_DIR)的值? - AppsDev
@AppsDev 你可以从这里了解:https://dev59.com/OG855IYBdhLWcg3woV4_ - Sohil R. Memon
完成后,我的测试目标可以看到 XXXTests-Swift.h,但该文件包含一行 @import XXX; 无法解析。 - cynistersix
请记得在.m文件中导入'MyProject-Swift.h',并且非常重要的是,在不受#ifdef FB_SONARKIT_ENABLED或#if DEBUG限制的地方进行导入! - scbojer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接