Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 向Xcode中添加了单元测试目标-未能导入桥接头赢得';别走开_Ios_Swift_Xcode_Unit Testing_Bridging Header - Fatal编程技术网

Ios 向Xcode中添加了单元测试目标-未能导入桥接头赢得';别走开

Ios 向Xcode中添加了单元测试目标-未能导入桥接头赢得';别走开,ios,swift,xcode,unit-testing,bridging-header,Ios,Swift,Xcode,Unit Testing,Bridging Header,我在Xcode项目中添加了一个新的测试目标。我的项目有Swift代码和Objective-C代码,并且有一个桥接头。在将桥接头添加到UnitTesting的构建设置中,或者执行导入MyTarget时,我得到了错误: 无法导入桥接标头 我试过: 将桥接头添加到项目、单元测试和主目标的构建设置中 将定义模块更改为是 将桥接头文件移动到根文件夹 我也尝试过制作一个示例项目,它构建得很好,运行得很好。在这一点上,把我所有的东西都投入到一个全新的项目中是不可取的。在这一点上,我从来都不需要导入MyTa

我在Xcode项目中添加了一个新的测试目标。我的项目有Swift代码和Objective-C代码,并且有一个桥接头。在将桥接头添加到UnitTesting的构建设置中,或者执行导入MyTarget时,我得到了错误:

无法导入桥接标头

我试过:

  • 将桥接头添加到项目、单元测试和主目标的构建设置中
  • 定义模块
    更改为
  • 将桥接头文件移动到根文件夹

我也尝试过制作一个示例项目,它构建得很好,运行得很好。在这一点上,把我所有的东西都投入到一个全新的项目中是不可取的。

在这一点上,我从来都不需要导入MyTarget来让单元测试在Swift中工作

通用解决方案

  • 我想你已经试过了,但不清楚你是否同时将桥接头添加到了应用目标和测试目标中
  • 另一种可能并不理想的选择是在测试目标中添加一个桥接头,这样实际上就有两个桥接头。它们看起来应该是一样的,这将是一个很好的测试
  • 如果使用
    $(SRCROOT)
    引用桥接头路径,请确保对其进行评估以获得正确的路径
  • 若所有这些都失败了,那个么您应该使用您的一个工作项目来执行
    .xcodeproj
    的文件差异,并匹配任何可能不同的相关值

桥接头系统并不完美,但我遇到了一些问题。

如果使用CocoaPods作为包管理器,则必须设置搜索路径等。提供一种简单的方法

尝试将其添加到播客文件中:

target 'YourProductTests' do
    inherit! :search_paths
    # Pods for testing
end
pod安装

它对我有用

如果上述解决方案不适用于您,请尝试手动设置:

  • 单击测试目标->构建设置->选项卡:全部和组合->Swift编译器-代码生成->Objective-C桥接头:添加xxx桥接头

  • 选中“搜索路径”,根据您的主要目标设置
    框架搜索路径
    标题搜索路径
    库搜索路径
    的值。可能此处丢失了某些搜索路径,请再次手动添加


  • 我也面临同样的问题。我做了以下操作,解决了“未能导入桥接头”的问题

    步骤:

  • 选择项目->构建设置->搜索“定义模块””->给出“是”
  • 复制Objective-C桥接头路径
  • 选择测试目标->构建设置->Swift编译器-常规->目标-C桥接头->给出桥接头路径
  • 确保测试目标的“标题搜索路径”包含ios目标中的所有标题。如果缺少任何标题,请添加它们
  • 建造

  • 参考资料:

    @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
    

    这可能对某些人有用:如果将单元测试目标添加到已经包含CoCoapod和一些Objective-C库的现有项目中

    以下步骤解决了导入桥接头失败的问题

  • 选择项目->生成设置->搜索“定义模块” ->回答“是”

  • 从“YourProduct”目标复制Objective-C桥接头路径,并 将其粘贴到“YourProductTests”目标的桥接头路径中

  • Podfile应该在“YourProduct”中包含“YourProductTests”目标,并且应该包含_inherit!:搜索路径,如下所示
  • 然后从项目的根文件夹执行“pod安装”。这将填充“YourProductTests”的标题搜索路径

  • 最后一步,验证“YourProduct”和“YourProductTests”目标的标题搜索路径是否相似


  • 你在这方面有什么进展吗?我也有同样的问题…@ManuelM。将
    ${SDKROOT}/usr/include/libxml2
    添加到项目的头搜索路径。如果对你有效,请告诉我。恐怕不行…:(@ManuelM.you find a solution?@swalkner它通过Xcode的进一步版本得到了解决。最终它成功了。我真的不知道我做了什么不同,抱歉。我想我在Bridgeting-header中添加了一些需要的框架。第二个选项对我有效。没有使用CocoaPods。这很有效。这件事在任何地方都有记录吗?我如何找到更多关于它的信息为什么我们必须使用
    inherit!:搜索路径
    不幸的是,该链接已过时。是的,您的解决方案有效。如果您知道原因,请发表评论
    target 'YourProduct' do
       # Add Pods for your product here...
    
       target 'YourProductTests' do
          inherit! :search_paths
          # Pods for product testing, if any
       end
    end