无法在xcode6 beta 6中打印对象('po')osx swift项目:(自动导入错误:未能从AST上下文获取模块'__ObjC')

试图在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抽象语法树上下文的build议?

从Xcode 6.1开始,如果你尝试了两次po命令,它将会在第二次尝试中工作。 对于每个新的debugging会话,第一个po命令将始终失败,但随后的调用将起作用。

在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

我build议仔细检查你有没有

-D DEBUG

标志设置在“其他Swift Flags”下,用于您正在使用的debuggingscheme。 当我不小心删除它时,我遇到了类似的问题。

清理我的项目并删除DerivedData为我工作。

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

我的团队花了好几个星期的时间来研究这个问题,最终成为了苹果编译器的一个bug,这是我们自己无法想象的。 此外,它有一个非常简单的解决方法。

所以,这只是我在这里发布的修复,为了最大限度地提高其他人search这个混淆错误信息的可能性,并find了这个答案。

所以,在这里。 在我们的例子中,我们有一个使用Swift和Objective-C框架的Objective-C项目。 此修补程序可能适用于稍有不同的上下文,只是尝试它。

编译标志从框架和项目中汇总的方式碰巧存在一个错误,“纯粹的Objective-C”项目“激活”它。

解决scheme:在Objective-C项目中添加一个空的Swift文件(“Whatever.swift”或其他),使其不再是纯粹的目标文件(new-> file-> Swift文件,不要创build桥头,文件只包含基础的导入)。