【问题标题】:xcode 8 Debugger 'Could not resolve type'xcode 8 调试器'无法解析类型'
【发布时间】:2017-04-23 14:30:05
【问题描述】:

在 Xcode 8 中,当遇到任何断点时,我尝试在 Xcode 调试器中打印任何对象,它总是打印 “无法解析类型”。我已经在互联网上进行了足够多的搜索。我检查了 EditScheme->Run->Info->BuildConfiguration 是否设置为“调试”。构建设置->优化级别设置为“无”。但没有任何线索说明为什么会发生这种情况。有人可以帮我吗?提前致谢。

【问题讨论】:

  • 这是一个老式的项目吗?
  • 没有。这个项目是使用 Xcode8 创建的
  • @CrazyDeveloper 你解决了这个问题吗?
  • @Reiner Melian 还没有。我还是有这个问题。
  • 参考这个'Could not solve type' - resolved你可能会找到你的解决方案。

标签: ios debugging xcode8


【解决方案1】:

我在纯 swift 框架中遇到了类似的问题,该框架没有任何桥接头,但 SWIFT_INSTALL_OBJC_HEADER 设置为 YES 却不少

https://stackoverflow.com/a/51186560/385307有更详细的描述

将设置更改为NO 后再次调试。

【讨论】:

    【解决方案2】:

    我在一个包含 Obj-C 框架的 Swift 项目中遇到了类似的问题。我已经使用

    在我的 Swift 项目中导入了框架
    import Obj-C-Framework
    

    此外,我还在 Swift 项目中创建了一个 Bridging-Header 文件,并使用包含 Obj-C-Framework 标头

    #include <Obj-C-Framework/Obj-C-Framework.h>
    

    这导致 Xcode 调试器在断点打印对象时总是显示'could not resolve type'。删除 Bridging-Header 中的 #include 修复了问题,并且对象在断点中正确打印。

    TL;DR 如果您的 Swift 项目使用 Obj-C 框架,请确保框架标头包含在您的 Swift 项目的桥接头中。

    【讨论】:

      【解决方案3】:

      我刚遇到同样的问题,已经解决了。我的项目是一个混合项目,同时包含 OC 和 Swift。我发现在导致问题的桥接头文件中导入了一些 .h 文件。当然,在 .h 文件中声明的枚举会导致问题,如下所示:

      typedef NS_ENUM(NSInteger,BadgeAlignment) {
          AlignmentCenter,
          AlignmentLeft,
          AlignmentRight,
      };
      

      如果我注释代码,一切都会好起来的。

      我只是为枚举的每个元素添加一个前缀,问题就为我解决了。

      typedef NS_ENUM(NSInteger,BadgeAlignment) {
          BadgeAlignmentCenter,
          BadgeAlignmentLeft,
          BadgeAlignmentRight,
      };
      

      我只是想在将 .h 转换为 Swift 时是否与 Swift 中的某些枚举发生冲突。

      我还是一头雾水……

      【讨论】:

        猜你喜欢
        • 2012-11-19
        • 1970-01-01
        • 1970-01-01
        • 2012-02-20
        • 1970-01-01
        • 2014-12-29
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        相关资源
        最近更新 更多