`po`给出`error:<expr>:1:1:错误:使用未解析的标识符`</expr>

时间:2015-02-13 10:31:41

标签: debugging swift console var po

我在控制台中遇到po这个问题,试图输出一个函数本身就可以工作,但输出一个变量或常量并不是。

first result is for <code>po bar.boy()</code>, second says <code>unresolved</code>

正如您在此处所看到的,虽然您认为var / let包含bar.boy()的内容,但Swift无法以某种方式找到它......

7 个答案:

答案 0 :(得分:50)

所以事实证明,过去可能存在一个错误,当你添加一个Swift文件时,它会添加/询问一个Bridging标题,但它不会将该行添加到你的项目中

SWIFT_OPTIMIZATION_LEVEL = "-Onone";

这意味着你将保持这种状态

SWIFT_OPTIMIZATION_LEVEL fastest

导致error: <EXPR>:1:1: error: use of unresolved identifier

我只能找到它,因为我在项目中移动了文件,当我将ObjC文件添加到项目中时,它向我询问了一个Bridging标题(虽然我已经有了一个!)并幸运地添加了{{1} }。有人可能会认为这是一个考虑默认值为SWIFT_OPTIMIZATION_LEVEL的错误,但是我想这只是过去的一个错误,现在已经修复了。

尽管如此,如果它在发布版本中添加fastest,我现在修复了它可能是另一种错误。我现在无法对此进行测试,因为为了测试这个,我只有none版本。对于Apple的工程师,我将其作为练习:)。

答案 1 :(得分:9)

我将 Swift Complier 设置为&#34; -O&#34;

public static <Format> String HHMMssS(final Format calendar)
{
    final String HHmmssS = "HHmmssS";
    return FastDateFormat.getInstance(HHmmssS).format(calendar).substring(0, HHmmssS.length());
}

并将其设置回&#34; -Onone&#34;。

$(e.target.parentNode).append("div.pic-box").html(output)

然后它有效。

答案 2 :(得分:4)

设置后修复:

Swift编译器 - 代码生成

下的

Optimization Level = None[-Onone]

请注意,在 Apple LLVM 8.0 - 代码生成下设置Optimization Level无效

答案 3 :(得分:3)

我敢打赌,这个错误是因为foo在编译过程中已被优化,并且在编译的代码中它的符号不再存在(即使它不应该存在)调试,它仍然是一个LLDB错误)

如果您在下一行(甚至是println)中添加foo的一些用法,可能会将其符号保留在IR中,并且您将能够po foo

(我同意这仍然是一个错误,但至少如果它有效,你会有一个解决方法和一些解释)

答案 4 :(得分:2)

我遇到了类似的问题,但是我已经有正确的配置,所有优化均设置为None。但是我仍然没有任何值。

进一步研究后,我发现问题出自Xcode,无法解析类型:

(lldb) frame variable self
<could not resolve type>

这使我想到了一个问题:xcode 8 Debugger 'Could not resolve type',其中描述了问题,并且桥接标头似乎引起了问题。

在我的项目没有任何桥接头的情况下,我再次研究了构建设置并找到了该设置

setting[1]

最初将其设置为YES。将其更改为NO后,符号将再次起作用。

SWIFT_INSTALL_OBJC_HEADER = NO

答案 5 :(得分:0)

如果您的项目使用Swift,则有两个独立的&#34;优化级别&#34;项目/目标配置中的设置。它不仅仅是&#34; SWIFT_OPTIMIZATION_LEVEL&#34;。请检查此链接:https://stackoverflow.com/a/32984193/2060180

如果它对某人有用,我会留在这里。

答案 6 :(得分:0)

对于那些在Objective-c项目中使用Swift框架并想要在该项目中调试Swift源文件的人:(就我而言,我有一个由Cocoapods管理的混合语言模块,我需要调试我的Objective-c示例项目中的swift模块)

在我在Objective-c项目中添加了一个空的Swift文件之后,它对我有用。

否则,那些快捷的编译器选项将不会显示在“构建设置”中。

enter image description here