我在控制台中遇到po
这个问题,试图输出一个函数本身就可以工作,但输出一个变量或常量并不是。
正如您在此处所看到的,虽然您认为var / let包含bar.boy()
的内容,但Swift无法以某种方式找到它......
答案 0 :(得分:50)
所以事实证明,过去可能存在一个错误,当你添加一个Swift文件时,它会添加/询问一个Bridging标题,但它不会将该行添加到你的项目中
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
这意味着你将保持这种状态
导致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',其中描述了问题,并且桥接标头似乎引起了问题。
在我的项目没有任何桥接头的情况下,我再次研究了构建设置并找到了该设置
最初将其设置为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)