대한 스위프트 2 이상 및 :
스위프트 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!
대한 스위프트 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]