Swift在为这个模块构建ast上下文时遇到了致命的错误

时间:2015-06-19 20:04:58

标签: xcode swift

我在Xcode 7 beta(7A120f)中将我的项目升级到Swift 2,并在lldb提示符下尝试 po self 时出现此错误:

  

警告:模块myApp中的Swift错误:

     

Swift在为这个模块构建ast上下文时遇到了致命的错误:无法为UIKit' UIKit加载底层模块。   调试器中将无法使用此模块的调试信息。

然后我离开了一个残缺的调试器(没有值)。无论我在哪里放置断点,都会发生这种情况。我试过了:

  • 清除派生数据
  • 产品>清洁
  • 重新启动xcode
  • 重启mac

我能够创建一个新项目并在其中查看调试输出,因此这可能与我的项目如何通过xcode迁移有关。

什么是上下文,我该如何纠正?

编辑: ast是'抽象语法树'。仍然不知道如何修复它。

3 个答案:

答案 0 :(得分:5)

我的项目中遇到了同样的问题。尝试po某个对象时lldb吐出的错误突出显示了该问题:

(lldb)po fileURL
warning: Swift error in module <APP_NAME>:
    Swift had fatal errors constructing the ast context for this module: <module-includes>:1:9: note: in file included from <module-includes>:1:
#import "Headers/Crashlytics.h"
        ^
<APP_PATH>/Pods/Crashlytics/Crashlytics.framework/Headers/Crashlytics.h:10:9: error: include of non-modular header inside framework module 'Crashlytics'
#import <Fabric/FABAttributes.h>
        ^

Crashlytics.h中的Crashlytics.framework总标头正在导入Fabric/FABAttributes.h,这不是Crashlytics模块的一部分(即不在其module.modulemap中)。这是使用CocoaPods安装的Crashlytics 3.1.0。

为什么Xcode 7将此视为致命错误超出了我(这只是6中的警告)。在Xcode 6中,您可以解决这种非模块化标题包括&#34;通过启用框架模块中的&#34;允许非模块化包含&#34; (CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES)您的应用程序目标中的构建设置。

我没有运气获得Xcode 7测试版以兑现上述标志(rdar://22044453&lt; - 请重复)。

我发现让调试器工作的唯一解决方案是删除Crashlytics pod。我评论了Crashlytics和Fabric pod,运行pod install,恢复调试,然后在发布之前重新安装pod。

我真的希望在测试结束时Xcode 7中已经修复了这个问题。

答案 1 :(得分:2)

检查您的桥接标头,如果您有

@import Crashlytics;

(或导致错误的任何其他框架。在我的情况下,它是GoogleMobileAds

尝试替换

#import <Crashlytics/Crashlytics.h>

答案 2 :(得分:1)

要解决此问题,我手动将所有文件和设置迁移到新的xcode项目。没有其他工作。可能有更好的解决办法,但我不能再花时间寻找它了。