【问题标题】:Debug console not showing values for Swift + Objective-C调试控制台未显示 Swift + Objective-C 的值
【发布时间】:2016-01-22 15:24:29
【问题描述】:

我的应用使用 Swift 和 Objective-C 中的第 3 方库。当我的调试器进入 Objective-C 代码时,调试控制台没有正确显示我的 Swift 字符串的值。相反,它显示无法读取数据。我们如何解决这个问题?

【问题讨论】:

  • 当我在 Swift 中创建字符串时,它们总是显示为 (String) - 所以问题可能与它的 (Swift._NSContiguousString)?也许您必须将其转换为字符串?我已经看到与 Parse 相关的问题,您在使用 Parse 吗?
  • @Mike 我正在使用 Auth0。电子邮件和用户名被声明为字符串。

标签: objective-c swift swift2 xcode7


【解决方案1】:

如果您使用的是 xcode 7.3,您可以调试 swift 类,但低于 7.3 的 xcode 您可以调试目标 c 类。没有快速和客观的 c 支持。您可以复制粘贴这些目标 c 变量,也可以通过“po objectiveC_variable”打印目标 c 变量。

【讨论】:

    【解决方案2】:

    我想你可能也在使用 Objective C 桥接头来在 Swift 中使用 Objective C 库。我看到电子邮件和密码都显示为 Swift._NSContiguousString。如果您为库制作的 bridging header 可能会出现问题或无法正确执行,则可能是这种情况,不确定。因为如果桥接工作正常,那么 Swift._NSContiguousString 将被视为“NSString”,您可以简单地将其转换为“String”。这就是我的想法,您可以检查桥接头。

    【讨论】:

      【解决方案3】:

      您可以在 lldb 上使用 po {{variable_name}} 来打印运行时值 并且还使用e {{variable_name}} 打印和e {{variable_name}} = {{value}} 设置新值。

      注意:当你使用 po 自动完成时工作,但当你使用 e 自动完成时不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 2017-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-02
        • 1970-01-01
        相关资源
        最近更新 更多