2016-06-13 25 views
9

Ho una domanda piuttosto semplice che spero abbia una risposta semplice. Sto usando il metodo di Swift filter per filtrare una collezione di oggetti utilizzando la chiusura argomento anonimo $0:Stampa (po) il valore di un argomento di chiusura anonimo Swift dalla console in Xcode

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

ho impostato un punto di interruzione all'interno della chiusura del filtro e vogliono solo per ispezionare il valore di $0, ma quando digito po $0 sulla console mi dà:

(lldb) po $0

error: :2:1: error: anonymous closure argument not contained in a closure

$0

^

Come posso aggirare questo?

Per essere chiari, il codice viene compilato ed eseguito, ma mi dà questo errore sulla console in fase di esecuzione.

+0

Vorrei anche trovare un modo per farlo, ma sembra che al momento potrebbe essere una limitazione di lldb: https://bugs.swift.org/browse/SR-2029 – kball

risposta

14

Questo è un problema noto con Xcode 8.1 GM Seed. Dal release notes:

Anonymous closure arguments in Swift cannot be used in LLDB expressions. For example, po $0 is not supported.

È possibile utilizzare il comando telaio variabile per stampare il suo valore:

fr va $0 

Questo problema è archiviato come rdar://28611943.

0

provare qualcosa di simile, al fine di eseguire il debug con Po i tuoi contenuti in ordine di filtrato:

let filteredArray = myArray.filter { 
    (anElement) in anElement.name != "Bob" 
} 

Poi, con il punto di interruzione:

(lldb) po anElement 
+0

Grazie. Sto cercando un modo per farlo senza riscrivere il mio codice, se possibile. – devios1