221124 TIL [Dictionary(grouping: , by: ) 를 이용해 배열을 그룹화 하기]

Doogie·2022년 11월 24일
0

최근 SwiftUI를 공부하고 있는 중 SwiftUI요소가 아니라 문법적인 요소에서 아예 처음 보는 것이 나왔고 지금까지 이 기능을 구현하기 위해 애를 썼던 과거의 모습들이 떠올라 TIL로 남기게 되었다

Dictionary(grouping: , by: )

사용법은 아주 간단하다

struct Human {
    let name: String
    let gender: String
}

let a = Human(name: "최두기", gender: "남자")
let b = Human(name: "권두기", gender: "여자")
let c = Human(name: "깍두기", gender: "중성")
let d = Human(name: "열무", gender: "중성")
let e = Human(name: "미지근", gender: "여자")

let people = [a, b, c, d, e]

현재 예시로 Human 이라는 struct를 만들었고 프로퍼티로 string타입의 name과 gender를 만들었다
그리고 gender를 기준으로 그룹화를 하려고 한다
즉, 원하는 형태는 [string: [Human]]의 타입이고 여기서 key 값이 string인 이유는 gender가 string이기 때문이다

그리고 grouping에는 그룹화 하기 전의 배열을, by에는 배열 요소를 어떤 기준으로 그룹화 할지를 대입하면 되는데 아래 코드와 같다

let grouping = Dictionary(
    grouping: people,
    by: {$0.gender}
)

grouping에는 기존 배열, by에는 해당 배열의 어떤 요소...

  • 해당 Dictionary를 프린트한 결과는 아래와 같이 gender를 기준으로 그룹화 되었다

마무리

그간 이 형태를 구현하기 위해 for문을 몇 번씩 돌면서 분리를 해줬었는데 진짜 멍청했다...
당장 로아랑부터 수정을 좀 해야겠다
(근데 Dictionary니까 재정렬하는 방법을 또 고민해야할 수도...?)

profile
끊임없이 문을 여는 개발자

0개의 댓글