我有一个相当简单的问题,希望有一个简单的答案。我使用Swift的filter
方法使用匿名闭包参数$0
过滤对象集合:
let filteredArray = myArray.filter {
$0.name != "Bob"
}
我在过滤器闭包中设置了一个断点,只想检查$0
的值,但是当我在控制台上输入po $0
时,它给了我:
(lldb)po $ 0
错误:: 2:1:错误:匿名闭包参数未包含在闭包
中$ 0
^
我怎样才能解决这个问题?
要清楚,代码编译并运行,但在运行时在控制台上给我这个错误。
答案 0 :(得分:28)
这是Xcode 8.1 GM Seed的一个已知问题。来自release notes:
Swift中的匿名闭包参数不能用于LLDB表达式。例如,不支持
po $0
。
您可以使用frame variable命令打印其值:
fr va $0
此问题以rdar://28611943
提交。
答案 1 :(得分:0)
尝试这样的事情,以便用过滤数组调试你的内容:
let filteredArray = myArray.filter {
(anElement) in anElement.name != "Bob"
}
然后用你的断点:
(lldb) po anElement