xcode - Swift 在为此模块构建 ast 上下文时出现 fatal error

标签 xcode swift

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

warning: Swift error in module myApp:

Swift had fatal errors constructing the ast context for this module: cannot load underlying module for 'UIKit' Debug info from this module will be unavailable in the debugger.

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

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

我能够创建一个新项目并在其中看到调试输出,所以这可能与我的项目如何被 xcode 迁移有关。

什么是 ast 上下文,我该如何更正它?

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

最佳答案

我在我的项目中遇到了同样的问题。 lldb 在尝试 po 一个对象时吐出的错误突出了这个问题:

(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.framework 中的 Crashlytics.h 伞头正在导入 Fabric/FABAAttributes.h,它不是 Crashlytics 模块的一部分(即不在其 module.modulemap 中)。这是使用 CocoaPods 安装的 Crashlytics 3.1.0。

为什么 Xcode 7 将此视为 fatal error 我无法理解(这只是 6 中的警告)。在 Xcode 6 中,您可以通过在应用程序目标中启用“允许非模块化包含在框架模块中”(CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES)build设置来解决这种“非模块化 header 包含”。

我没有运气让 Xcode 7 测试版支持上述标志(rdar://22044453 <-- 请重复)。

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

我真的希望在 Xcode 7 推出 Beta 版时修复它。

关于xcode - Swift 在为此模块构建 ast 上下文时出现 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946434/

相关文章:

swift - Firebase 数据库发布错误 : Cannot invoke initializer for type 'Post' with an argument list of type

ios - 为什么 UIWebView 无法在 Safari 中打开我的链接?

ios - UITableView pull-to-add 交互模式

objective-c - 使用分段控件过滤 TableView 的部分

ios - 划分 iOS API 可用性

ios - 当用户在 uipageviewcontroller 的最后一页时设置按钮的可见性

xcode - 在 key 链中安装证书

swift - 通过按钮在新的 Web View 中打开 PDF 文件

ios - Else 语句中的 AlertView

ios - 自定义 AlertView Controller 没有显示 View Controller 的顶部?