Для Swift 2 та новіших версій:
Swift 2 додає моделі регістра в протягом циклів, що робить його ще простіше і безпечніше набирати акторів у протягом циклу:
for case let button as AClass in view.subviews {
// do something with button
}
Чому це краще, ніж те, що ти міг зробити в Swift 1.2 і раніше? Оскільки шаблони справ дозволяють вибрати конкретний тип із колекції. Він відповідає лише потрібному типу, тому якщо ваш масив містить суміш, ви можете працювати лише з певним типом.
Наприклад:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
Вихід:
Hello
World!
Для Swift 1.2 :
У цьому випадку ви робите кастинг, view.subviews
а ні button
, тому вам потрібно перекинути його на масив потрібного типу:
for button in view.subviews as! [AClass] {
// do something with button
}
Примітка: Якщо базового типу масиву немає [AClass]
, це призведе до збою. Тобто те , що !
на as!
це говорить вам. Якщо ви не впевнені в типі, ви можете використовувати умовний формат as?
разом із додатковим прив'язкою 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
}
}
Для Swift 1.1 і новіших версій:
for button in view.subviews as [AClass] {
// do something with button
}
Примітка. Це також призведе до збою, якщо підгляди не всіх типів AClass
. Перерахований вище безпечний метод також працює з більш ранніми версіями Swift.
for button in view.subviews as [AClass]