2016-06-13 15 views
9

Tôi có một câu hỏi khá đơn giản mà tôi hy vọng có một câu trả lời đơn giản. Tôi đang sử dụng phương pháp filter Swift để lọc một bộ sưu tập của các đối tượng sử dụng đối số đóng cửa vô danh $0:In (po) giá trị của một đối số đóng cửa vô danh Swift từ bàn điều khiển trong Xcode

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

tôi đã thiết lập một breakpoint trong việc đóng cửa bộ lọc và chỉ muốn kiểm tra giá trị của $0, nhưng khi tôi gõ po $0 trên bảng điều khiển, nó cung cấp cho tôi:

(lldb) po $0

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

$0

^

Làm cách nào để giải quyết vấn đề này?

Để rõ ràng, mã biên dịch và chạy, nhưng cung cấp cho tôi lỗi này trên bảng điều khiển khi chạy.

+0

Tôi cũng muốn tìm cách để làm điều này, nhưng có vẻ như nó hiện có thể là giới hạn của lldb: https://bugs.swift.org/browse/SR-2029 – kball

Trả lời

14

Đây là một vấn đề được biết đến với Xcode 8.1 GM Seed. Từ release notes:

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

Bạn có thể sử dụng biến khung lệnh in giá trị của nó:

fr va $0 

Vấn đề này được nộp như rdar://28611943.

0

Hãy thử một cái gì đó như thế này để gỡ lỗi với po nội dung của bạn trong mảng lọc:

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

Sau đó, với breakpoint của bạn:

(lldb) po anElement 
+0

Cảm ơn. Tôi đang tìm cách để làm điều đó mà không cần viết lại mã của tôi nếu có thể. – devios1

Các vấn đề liên quan