用スウィフト2以降:
Swift 2では、forループに大文字小文字のパターンが追加され、forループでの型キャストがさらに簡単かつ安全になります。
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!
用スウィフト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
}
}
用スウィフト1.1およびそれ以前:
for button in view.subviews as [AClass] {
// do something with button
}
注:サブビューのタイプがすべてではない場合も、これはクラッシュしAClass
ます。上記の安全な方法は、以前のバージョンのSwiftでも機能します。
for button in view.subviews as [AClass]