카테고리 없음

Swiftui where vs of

양시관 2024. 1. 20. 22:10

1. 학습동기 

프로젝트를 학습하는 동안 솔직히 where 가 진짜 처음에 이해가 안되었고 그 상태로 of 를 보았다. 그거를 보고 검색을 해보는데 엥? 이라는 질문이 떠올랐다 도대체 뭐가 다른거지..? 차이점은 어느정도 느끼긴했지만 클로저에서 사용하냐 마냐 이정도에 느낌에서 멈췄었고 일단 프로젝트에 다른파일들과 연결관계를 적립하는부분에서 이해가 되지않았고 이를 포스팅에 써보려고 한다. 

내가볼땐 헷갈리는 사람은 없을것같지만 .. 내 포스팅의 목적은 내가 알려고하는거니까! 해보려고한다.

 

2. where 이란? 

SwiftUI에서 where 주로 ForEach 구문이나 컬렉션의 순회에서 조건을 적용하는 사용된다.  조건에 부합하는 요소들만을 대상으로 특정 연산을 수행하고자 때 사용하는것이다. 

 

ForEach(items.indices.where { items[$0].isActive }, id: \.self) { index in
   
}

 

예시코드를 써보자면 이렇게 된다. 이걸 해석해보자면 items안에 인스턴스인 indices에 접근하고 거기서 where를 사용하면 그 뒤에 있는 조건들을 판별하고 index in 밑에 줄에서 해당 조건에 맞는 뷰를 호출하는등으로 사용이 된다. 해당 조건도 해석을 해보면  where 클로저는 items 배열에서 isActive 가 true 인 요소들을 선택하는 조건을 가지고있다. 클로저라는건 정말 swift에 꽃이지만 여기서 다루기엔 너무 헤비하다 다음에 다루도록 하고 of 를 알아보자

 

 

3.of 란 ?

SwiftUI에서 of는 주로 특정 타입의 객체를 찾거나 이벤트를 처리할 때 사용되는 키워드이다. 특정 타입의 값을 감지하고 변경 사항에 대응하는 데 사용된다. of 의 목적을 간단하게 하면 배열 내에서 특정 값과 동일한 요소를 찾을 때 사용된다. 그리고 where 과는 다르게 직접적으로 값을 비교한다. 

 

4.차이점

이제 차이점에 대해서 얘기해보려고 한다. where 는 조건을 정의하기위해서 클로저를 사용하는거다 .근데 of 는 직접비교를 수행하기 때문에 클로저를 필요로 하지않는다는게 차이점의 핵심이다. 또한 where 는 더 복잡한 조건을 사용할 수 있으며 사용자가 정의한 어떤 조건이든 검사할 수있는데 of 는 배열의 요소와 주어진 값이 동일한지를 직접비교를 한다.

이걸 정리해서 사용되는 상황을 생각해보면 where는 더 유연하고 복잡한 검색조건을 필요로 할 때 사용이되고 of 는 단순한 값비교가 필요할때 ! 사용한다. 라고 생각하면 될것같다.

 

 

5. 후기 

사실 어느정도 이해가있는 사람들이라면 이정도는 헷갈리지않을것이라고 생각하는데 나의 지금까지의 개발 방식이 일단 개발을 박치기로 해왔기때문에 개념부분에서 좀 흔들린다는 생각이들었고 타 블로그에서 맛있게 정리한게 없다고 생각해서,, 부족하지만 조금 얘기를 해보았다 ㅎ( 사실 내가 제일 헷갈린다 .ㅋㅋ ) 그렇게 오늘 하루를 마지막으로 배움을 집어넣고 마무리한다.