Für Swift 2 und höher:
Swift 2 fügt Fall Muster zu für Schleifen, die es noch einfacher und sicherer macht Guss in einem eintippen für Schleife:
for case let button as AClass in view.subviews {
// do something with button
}
Warum ist das besser als das, was Sie in Swift 1.2 und früher tun könnten ? Mit Fallmustern können Sie Ihren spezifischen Typ aus der Sammlung auswählen. Es entspricht nur dem Typ, den Sie suchen. Wenn Ihr Array also eine Mischung enthält, können Sie nur einen bestimmten Typ bearbeiten.
Beispielsweise:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
Ausgabe:
Hello
World!
Für Swift 1.2 :
In diesem Fall wird ein Casting durchgeführt view.subviews
und nicht button
. Sie müssen es daher auf das Array des gewünschten Typs herabstufen:
for button in view.subviews as! [AClass] {
// do something with button
}
Hinweis: Wenn der zugrunde liegende Array-Typ nicht lautet [AClass]
, stürzt dies ab. Das sagt dir der !
On as!
. Wenn Sie sich über den Typ nicht sicher sind, können Sie eine bedingte Umwandlung as?
zusammen mit einer optionalen Bindung verwenden 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
}
}
Für Swift 1.1 und früher:
for button in view.subviews as [AClass] {
// do something with button
}
Hinweis: Dies stürzt auch ab, wenn die Unteransichten nicht alle vom Typ sind AClass
. Die oben aufgeführte sichere Methode funktioniert auch mit früheren Versionen von Swift.
for button in view.subviews as [AClass]