Pour Swift 2 et versions ultérieures:
Swift 2 ajoute des modèles de cas aux boucles for , ce qui rend encore plus facile et plus sûr la saisie de caractères dans une boucle for :
for case let button as AClass in view.subviews {
// do something with button
}
Pourquoi est-ce mieux que ce que vous pourriez faire dans Swift 1.2 et versions antérieures? Parce que les modèles de cas vous permettent de choisir votre type spécifique dans la collection. Il ne correspond qu'au type que vous recherchez, donc si votre tableau contient un mélange, vous ne pouvez opérer que sur un type spécifique.
Par exemple:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
Production:
Hello
World!
Pour Swift 1.2 :
Dans ce cas, vous effectuez un cast view.subviews
et non button
, vous devez donc le réduire dans le tableau du type souhaité:
for button in view.subviews as! [AClass] {
// do something with button
}
Remarque: si le type de tableau sous-jacent n'est pas [AClass]
, cela plantera. C'est ce que l' !
on as!
vous dit. Si vous n'êtes pas sûr du type, vous pouvez utiliser un cast conditionnel as?
avec une liaison facultative 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
}
}
Pour Swift 1.1 et versions antérieures:
for button in view.subviews as [AClass] {
// do something with button
}
Remarque: cela plantera également si les sous-vues ne sont pas toutes de type AClass
. La méthode sûre répertoriée ci-dessus fonctionne également avec les versions antérieures de Swift.
for button in view.subviews as [AClass]