【问题标题】:unable to print object ('po') in xcode6 beta 6 osx swift project: (Error in auto-import: failed to get module '__ObjC' from AST context)无法在 xcode6 beta 6 osx swift 项目中打印对象('po'):(自动导入错误:无法从 AST 上下文获取模块'__ObjC')
【发布时间】:2014-10-20 15:22:04
【问题描述】:

在 xcode 6 beta 6 OSX Swift 项目中尝试打印对象(po 命令)会导致以下错误消息:

(lldb) po managedObject
error: Error in auto-import:
failed to get module '__ObjC' from AST context

在这种情况下,有问题的对象是NSManagedObject 的一个实例。

关于如何帮助将__ObjC module 自动导入 LLVM 抽象语法树上下文的任何建议?

【问题讨论】:

  • 我有同样的问题,甚至不能在 viewController 中 po self。我不知道这是从哪里来的或如何解决它
  • 我在 beta 7 中也有同样的问题。
  • 用 print 代替 po
  • 不使用表达式,您是否尝试过frame variable managedObject
  • 帧变量“有效”(缩写 fr v 也是如此)。就我而言,我的 'manageObject 是通过 AFNetworking 的字典中的 JSON。我想在字典中看到类似 managedObject['key'] 的内容。这不适用于 fr v

标签: macos swift xcode6


【解决方案1】:

从 Xcode 6.1 开始,如果您尝试两次 po 命令,它将在第二次尝试时起作用。对于每个新的调试会话,第一个 po 命令总是会失败,但后续调用会起作用。

【讨论】:

  • 这里一样,崩溃了
  • 它不再适用于 Xcode 7... 仍然是同样的崩溃
  • 第二次尝试,我得到:error: The AST context is in a fatal error state.
【解决方案2】:

在 xcode 7.3.1 中有同样的问题:

error: Error in auto-import:
failed to get module 'Touch' from AST context:
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h"
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h:17:10: error: 'libxml/xmlversion.h' file not found
#include <libxml/xmlversion.h>
         ^
could not build Objective-C module 'LibXML2'

但您可以使用fr v managedObject 代替po managedObject

【讨论】:

    【解决方案3】:

    我建议仔细检查您是否拥有

    -D调试

    在“其他 Swift 标志”下为您用于调试的方案设置的标志。当我不小心删除它时,我遇到了类似的问题。

    【讨论】:

      【解决方案4】:

      清理我的项目并删除 DerivedData 对我有用。

      【讨论】:

        【解决方案5】:

        我在 WWDC2017 上与一位 Apple 工程师讨论了类似的错误消息。这个问题似乎有很多原因,我知道我的问题与上述问题略有不同。

        我的团队花了数周时间试图解决这个问题,结果它成为 Apple 编译器上的一个错误,我们自己永远无法解决这个问题。此外,它有一个非常简单的解决方法。

        所以,这只是我在此处发布修复程序,以最大限度地提高其他人搜索此令人困惑的错误消息并找到此答案的可能性。

        所以,就是这样。在我们的案例中,我们有一个混合了 Swift 和 Objective-C 框架的 Objective-C 项目。此修复程序可能适用于略有不同的上下文,请尝试一下。

        编译标志从框架和项目聚合的方式恰好存在一个错误,“纯 Objective-C”项目“激活”它。

        解决方案:在您的 Objective-C 项目中添加一个空的 Swift 文件(“Whatever.swift”或其他),使其不再是纯客观的 c(new->file->Swift 文件,不要创建桥接头。该文件将仅包含 Foundation 的导入)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-22
          • 2017-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-18
          相关资源
          最近更新 更多