Dla Swift 2 i nowszych:
Swift 2 dodaje wzory przypadków do pętli for , dzięki czemu wpisywanie rzutów w pętli for jest jeszcze łatwiejsze i bezpieczniejsze :
for case let button as AClass in view.subviews {
// do something with button
}
Dlaczego jest to lepsze niż to, co można było zrobić w wersji Swift 1.2 i wcześniejszych? Ponieważ wzory kopert pozwalają na wybranie konkretnego typu z kolekcji. Pasuje tylko do typu, którego szukasz, więc jeśli twoja tablica zawiera mieszaninę, możesz operować tylko na określonym typie.
Na przykład:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
Wynik:
Hello
World!
Dla Swift 1.2 :
W tym przypadku rzutujesz, view.subviews
a nie button
, więc musisz obniżyć go do tablicy odpowiedniego typu:
for button in view.subviews as! [AClass] {
// do something with button
}
Uwaga: jeśli podstawowy typ tablicy nie jest [AClass]
, to się zawiesi. To, co !
on as!
ci mówi. Jeśli nie masz pewności co do typu, możesz użyć rzutowania warunkowego as?
wraz z opcjonalnym wiązaniem 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
}
}
Dla Swift 1.1 i starszych:
for button in view.subviews as [AClass] {
// do something with button
}
Uwaga: spowoduje to również awarię, jeśli podglądy nie są wszystkich typów AClass
. Wymieniona powyżej bezpieczna metoda działa również z wcześniejszymi wersjami języka Swift.
for button in view.subviews as [AClass]