Untuk Swift 2 dan lebih baru:
Swift 2 menambahkan pola kasus ke for loop, yang membuatnya lebih mudah dan lebih aman untuk mengetik cast in a for loop:
for case let button as AClass in view.subviews {
// do something with button
}
Mengapa ini lebih baik daripada yang dapat Anda lakukan di Swift 1.2 dan sebelumnya? Karena pola case memungkinkan Anda untuk memilih tipe spesifik Anda dari koleksi. Ini hanya cocok dengan tipe yang Anda cari, jadi jika array Anda berisi campuran, Anda hanya dapat beroperasi pada tipe tertentu.
Sebagai contoh:
let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]
for case let str as String in array {
print(str)
}
Keluaran:
Hello
World!
Untuk Swift 1.2 :
Dalam kasus ini, Anda sedang mentransmisi view.subviews
dan tidak button
, jadi Anda perlu menurunkannya ke array jenis yang Anda inginkan:
for button in view.subviews as! [AClass] {
// do something with button
}
Catatan: Jika tipe array yang mendasarinya tidak [AClass]
, ini akan macet. Itulah yang dikatakan !
pada as!
Anda. Jika Anda tidak yakin tentang jenisnya, Anda dapat menggunakan cast bersyarat as?
bersama dengan binding opsional 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
}
}
Untuk Swift 1.1 dan sebelumnya:
for button in view.subviews as [AClass] {
// do something with button
}
Catatan: Ini juga akan macet jika subview tidak semuanya berjenis AClass
. Metode aman yang tercantum di atas juga berfungsi dengan versi Swift sebelumnya.
for button in view.subviews as [AClass]