我在我的XCode项目中添加了一个新的测试目标。我的项目有Swift代码和Objective-C代码,并有一个桥接头。在将Bridge桥接头添加到UnitTesting的构建设置或执行import MyTarget
后,我收到错误:
failed to import bridging header
我试过了:
defines modules
更改为Yes
。我还尝试过制作一个样本项目,该项目已经建立并且运行良好。把我所拥有的一切都带到一个干净的新项目中,目前还不是一个选择。
答案 0 :(得分:34)
如果您使用Pod作为包管理器,则必须设置搜索路径等。提供一种简单的方法,
尝试在Podfile中添加它
target 'YourProductTests' do
inherit! :search_paths
# Pods for testing
end
和pod install
它对我有用。
如果上述解决方案不适合您。尝试手动设置
点击您的测试目标 - >构建设置 - >标签:全部&组合 - > Swift Compiler -Code Genration - > Objective C Bridging Header:添加你的xxx-bridging-header
选中“搜索路径”,根据您的主要目标设置Framework Search Path
,Header Search Paths
,Library Search Path
的值。也许某些搜索路径会丢失,请再次手动添加。
答案 1 :(得分:3)
此时,我从来没有import MyTarget
让单元测试在Swift中工作。
常见解决方案
$(SRCROOT)
引用桥接标头路径,请确保对其进行评估以纠正路径。.xcodeproj
的文件与您的工作项目进行差异,并匹配可能不同的任何相关值。桥接标题系统并不完美,但我遇到了一些问题。
答案 2 :(得分:2)
@Victor Choy解决方案对我有用,但是我不得不像这样将测试目标移到产品目标内部:
target 'YourProduct' do
# Pods for product
target 'YourProductTests' do
inherit! :search_paths
# Pods for product testing
end
end
这对我不起作用:
target 'YourProduct' do
# Pods for product
end
target 'YourProductTests' do
inherit! :search_paths
# Pods for product testing
end
答案 3 :(得分:1)
这对某人可能有用:如果将单元测试目标添加到已经包含CocoaPods和一些Objective-C库吊舱的现有项目中。
以下步骤解决了 导入桥头失败 的问题。
选择项目->构建设置->搜索“定义模块” ->输入“是”
从“ YourProduct”目标和以下目标复制Objective-C桥接标头路径 将其粘贴到“ YourProductTests”目标的桥接标头路径中。
...
target 'YourProduct' do
# Add Pods for your product here...
target 'YourProductTests' do
inherit! :search_paths
# Pods for product testing, if any
end
end
然后从项目的根文件夹执行“ pod安装”。这将填充“ YourProductTests”的标题搜索路径。
最后一步,验证“ YourProduct”和“ YourProductTests”目标的 Header搜索路径应该相似。
答案 4 :(得分:0)
我遇到了同样的问题。我做了以下和'未能导入桥接标题的问题'解决了。
步骤: