Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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 Swift框架:伞头&x27;[…]h';找不到_Ios_Swift_Ios Frameworks - Fatal编程技术网

Ios Swift框架:伞头&x27;[…]h';找不到

Ios Swift框架:伞头&x27;[…]h';找不到,ios,swift,ios-frameworks,Ios,Swift,Ios Frameworks,在同时包含Objective-C和Swift代码的自定义框架中,Swift编译器抛出以下错误: [build_path]/unextended-module.modulemap:2:19: error: umbrella header 'bugtest.h' not found umbrella header "bugtest.h" ^ <unknown>:0: error: could not build Objective-C module

在同时包含Objective-CSwift代码的自定义框架中,Swift编译器抛出以下错误:

[build_path]/unextended-module.modulemap:2:19: error: umbrella header 'bugtest.h' not found
  umbrella header "bugtest.h"
                  ^
<unknown>:0: error: could not build Objective-C module 'bugtest'
[build\u path]/未展开的模块。模块映射:2:19:错误:未找到伞形头“bugtest.h”
伞头“bugtest.h”
^
:0:错误:无法生成Objective-C模块“bugtest”

当为框架目标启用了
始终搜索用户路径
设置时,将发生这种情况

将其设置为
No
将解决该错误

我知道这是Swift编译器中的一个bug,我已经向苹果公司提交了一份雷达文件。

请参阅Xcode 7 Beta版中的

,在使用Swift 2时,如果框架头未声明为“Public”,也会发生这种情况


例如,我有一个Cocoa Touch框架,它的头文件具有“Project”可见性,并且在我的项目中所有Swift文件都出现了错误“伞形头…找不到”,当我的头文件为“Public”时,错误就消失了,似乎有一个快速的编译器更改影响了一些cocoapod(灵活、快速等)。请尝试此线程中指定的一些解决方案:但是,如果两者都不起作用,请尝试使用Xcode 7.0.1或7.2 beta。您可以在此处同时获取这两个参数:

编辑:在我的例子中,为了解决这个问题,我还不得不将CocoaPods降级到0.38.2

稍后编辑:它似乎与Xcode 7.1无关。将椰子荚降到0.38.2应该会有帮助:

sudo gem uninstall cocoapods -v 0.39
sudo gem install cocoapods -v 0.38.2

这通常发生在项目重命名或类似事件之后。问题是伞头不再列为公共头。检查所附图像以了解如何修复此问题


头文件需要位于[Build Phases/Headers/Public]部分

如果您的头文件已经在[Build Phases/Headers/Public]部分中,那么多次执行休耕可以解决我的问题:

  • 清理项目
  • 将头文件移动到“private”或“project”部分
  • 将头文件移回“public”部分
  • 重建一切

  • 对我来说,访问级别是公共的,但在未找到的情况下也会失败。我确实将“构建阶段”的“标题”部分移到了顶部,它开始工作了。 到podfile的脚本:

    post_install do |installer|
    installer.pods_project.targets.each do |target|
        phase_name = 'Headers'
        target.build_phases.each do |phase|
            if (phase.display_name.include? phase_name)
                target.build_phases.unshift(phase).uniq! unless target.build_phases.first == phase
            end
        end
    end
    
    我不知道为什么会这样。在虚拟项目上尝试过-没有发生。仅适用于具有多个依赖项的大型项目。
    在复制伞形标题之前进行编译。

    9个答案中没有一个对我有帮助,所以我尝试创建一个新的项目,我可以将它发送给苹果公司以归档一个bug。我很惊讶我不能重现这个问题。我检查了构建设置,它们是等效的。显然这是某种错误


    如果没有其他帮助,请尝试创建一个新项目,并从当前项目中导入至少一些客观的C&Swift类,将与框架相关的构建设置与新项目中的默认值进行比较,最终将所有文件移到新项目中。

    这里已经有一些很好的答案@Shadow_x99非常有用。然而,如果我能被允许补充我自己的经验

    在构建过程中自动识别伞形标头。它不是在目标的生成设置中指定的或从项目设置继承的

    为了避免这个错误,从XCode 7开始,如下所示:

    警告:未找到目标“MyTarget”的伞形标题,将不会生成模块映射

    必须采取两个重要步骤

    首先,伞头必须具有与目标相同的名称。因此,如果您的目标是一个名为
    MyTarget
    的框架,那么必须有一个名为
    MyTarget.h
    的头


    其次,在
    MyTarget
    的构建阶段-如该回答中所述-该头文件必须列在公共部分中,如上所述。

    还有一个解决方案:重命名文件夹后,旧位置可能仍会列在.h文件的项目文件中,即使您通过Xcode的侧栏更新了位置。此旧位置导致伞头错误


    简单解决方案:删除对.h文件的引用,然后重新添加。(然后记得再次公开!)

    这有4种不同的方式,忽略以前版本的Xcode中的bug

    • 您的项目中没有名为$(TARGET_NAME).h的伞形标题
    • 您有伞头,但未设置为公共
    • 定义\u模块
      未设置为
    • CLANG_ENABLE_MODULES
      未设置为
      YES

    您必须将框架设置为公共:


    我花了一整天的时间研究它,但它是值得的。我尝试了所有的方法,但没有解决它。我创建了一个新项目,一个实验,我发现用户头搜索路径设置为${SRCROOT}递归的,我将其更改为${SRCROOT}非递归的,更改了桥接头路径(例如
    #import“SVProgressHUD.h”
    ->
    #import“Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h”
    ),错误消失了。

    我遇到了同样的问题,建议的答案对我的情况都没有帮助,所以我将此留在这里,以防有人遇到同样的问题

    我在“构建阶段”中添加了一个“运行脚本”,但最终删除了它,这时我开始出现错误


    我的解决方案最终不得不清理项目,重建框架,然后正确构建应用程序项目。

    从项目目录中删除这些文件。
    .xcworkspace
    pods/
    podfile.lock

    更新pod并构建项目。

    我发现使用新的
    function removeHeaders() {  
        find $BUILD_ROOT/...  -name '*.h' -exec rm -f {} \;  
    }  
    removeHeaders