Dành cho Swift 2 trở lên:
Swift 2 cho biết thêm mô hình trường hợp để cho vòng, mà làm cho nó thậm chí còn dễ dàng hơn và an toàn hơn để gõ dàn diễn viên trong một cho vòng lặp:
for case let button as AClass in view.subviews {
// do something with button
}
Tại sao điều này tốt hơn những gì bạn có thể làm trong Swift 1.2 trở về trước? Bởi vì các mẫu trường hợp cho phép bạn chọn loại cụ thể của bạn ra khỏi bộ sưu tập. Nó chỉ phù hợp với loại bạn đang tìm kiếm, vì vậy nếu mảng của bạn chứa hỗn hợp, bạn chỉ có thể hoạt động trên một loại cụ thể.
Ví dụ:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
Đầu ra:
Hello
World!
Dành cho Swift 1.2 :
Trong trường hợp này, bạn đang truyền view.subviews
và không button
, vì vậy bạn cần hạ thấp nó xuống mảng của loại bạn muốn:
for button in view.subviews as! [AClass] {
// do something with button
}
Lưu ý: Nếu loại mảng cơ bản là không [AClass]
, điều này sẽ sụp đổ. Đó là những gì !
trên as!
đang nói với bạn. Nếu bạn không chắc chắn về loại bạn có thể sử dụng dàn diễn viên có điều kiện as?
cùng với ràng buộc tùy chọn if let
:
if let subviews = view.subviews as? [AClass] {
// If we get here, then subviews is of type [AClass]
for button in subviews {
// do something with button
}
}
Đối với Swift 1.1 trở về trước:
for button in view.subviews as [AClass] {
// do something with button
}
Lưu ý: Điều này cũng sẽ sụp đổ nếu các cuộc phỏng vấn không phải là tất cả các loại AClass
. Phương pháp an toàn được liệt kê ở trên cũng hoạt động với các phiên bản trước của Swift.
for button in view.subviews as [AClass]