Para Swift 2 y posteriores:
Swift 2 agrega patrones de caso a los bucles for , lo que hace que sea aún más fácil y seguro escribir cast en un bucle for :
for case let button as AClass in view.subviews {
// do something with button
}
¿Por qué esto es mejor que lo que podría hacer en Swift 1.2 y versiones anteriores? Porque los patrones de caja le permiten elegir su tipo específico de la colección. Solo coincide con el tipo que está buscando, por lo que si su matriz contiene una mezcla, puede operar solo en un tipo específico.
Por ejemplo:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
Salida:
Hello
World!
Para Swift 1.2 :
En este caso, está transmitiendo view.subviews
y no button
, por lo que debe reducirlo a la matriz del tipo que desea:
for button in view.subviews as! [AClass] {
// do something with button
}
Nota: Si el tipo de matriz subyacente no lo es [AClass]
, se bloqueará. Eso es lo que te está diciendo el !
on as!
. Si no está seguro del tipo, puede usar una conversión condicional as?
junto con un enlace opcional 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
}
}
Para Swift 1.1 y versiones anteriores:
for button in view.subviews as [AClass] {
// do something with button
}
Nota: Esto también fallará si las subvistas no son todas de tipo AClass
. El método seguro mencionado anteriormente también funciona con versiones anteriores de Swift.
for button in view.subviews as [AClass]