2014-12-02 3 views
21

다른 장소에서 'where'키워드를 사용한 후 전환 할 수 있습니까? 예를 들어 in for 루프에서 사용할 수 있습니까?for 루프에서 'where'를 신속하게 사용할 수 있습니까?

나는 모든 나는 이런 식으로 뭔가 할 수있는, 값으로, bools 배열을 가지고 : 이것은을 경우 사용하는 것보다 훨씬 더 좋은 것

var boolArray: [Bool] = [] 

//(...) set values and do stuff 


for value where value == true in boolArray { 
    doSomething() 
} 

을, 그래서 가능성이 있는지 궁금 for-loop와 함께 사용할 위치를 지정합니다. 너의 시간 동안 타이.

스위프트 2에서
+2

' .filter() {$ 0 == true}'그런가요? –

+0

@ BenjaminGruenbaum 와우 그래, 고맙습니다. – Simon

+0

다행히도 내가 도울 수있어서 기쁘다 - 대답을 추가했다. –

답변

52

이 새로운 where 구문이 추가되었습니다 : 당신이 그것을 반복하기 전에

for value in boolArray where value == true { 
    ... 
} 

전에서 2.0 하나의 솔루션은 어레이에 .filter를 호출하는 것입니다 :

boolArray의 값에 대한
for value in boolArray.filter({ $0 == true }) { 
    doSomething() 
} 
+2

좋은 해결책. 스타일의 경우, 후행 클로저 구문을 사용하지 않는 것이 좋습니다. - 그 방법은 중괄호 집합이 for 루프의 본문임을 분명히합니다. boolArray.filter의 값 ({$ 0 == true}) {doSomething()}' – rickster

+0

벤, 왜 for 루프가 실행되지 않는지 말해 줄 수 있습니까? 또한보기는 자동으로 UIBarButtonItem으로 인식되지 않습니다. self.view.subviews에서보기 view.isKindOfClass (UIBarButtonItem) { view.enabled = false } –

+0

좋은 세미콜론; – mafiOSo

관련 문제