在Xcode

时间:2016-06-13 20:46:47

标签: xcode swift closures

我有一个相当简单的问题,希望有一个简单的答案。我使用Swift的filter方法使用匿名闭包参数$0过滤对象集合:

let filteredArray = myArray.filter {
    $0.name != "Bob"
}

我在过滤器闭包中设置了一个断点,只想检查$0的值,但是当我在控制台上输入po $0时,它给了我:

  

(lldb)po $ 0

     

错误:: 2:1:错误:匿名闭包参数未包含在闭包

中      

$ 0

     

^

我怎样才能解决这个问题?

要清楚,代码编译并运行,但在运行时在控制台上给我这个错误。

2 个答案:

答案 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