본문 바로가기

Swift 문법

[Swift] 컬렉션 자료형에 대해 알아보자 - 2 (Dictionary)

반응형

지난 포스팅에서는 컬렉션 자료형 중 Array에 대해 알아보았습니다.

이번 포스팅에서는 Dictionary에 대해 알아보겠습니다.

Dictionary란?

image

Dictionary요소키-값 쌍인 컬렉션이고, 구조체로 되어있네요!
또한 Dictionary는 일종의 해시 테이블이고, 순서가 보장 되어 있지 않습니다.

특이하게 요소중 keyHashable을 채택하고 있어야하는데, Swift에서 제공하는 기본 자료형들은 대부분 Hashable 프로토콜을 준수하고 있습니다.

여기서 Hashable이 머냐.. 하면 HashableEquatable 프로토콜을 준수하고 있고..
Equatable 프로토콜은 == 과 같은 연산자를 사용할 때, 사용되는 프로토콜 인데, 어떤 프로퍼티를 가지고 값이 같은지 아닌지 확인하기 위한 프로토콜 이라고 보시면 될 것 같아요.

간단하게 말하면 Dictionary의 key비교할 수 있는 유일한 Key를 넣어주어야 합니다.

Dictionary 생성

초기 값을 주어 요소가 있는 딕셔너리를 다음과 같이 생성할 수 있습니다.
image

물론 빈 딕셔너리를 생성하는 방법도 있습니다.

image

셋 다 같은 표현입니다.
타입을 정확히 명시해줬다면 [:] 으로 빈 딕셔너리를 생성할 수 있어요.
하지만 타입을 명확히 해주지 않았다면 오류가 발생합니다.

image

dictionary3에서 컴파일 오류가 발생합니다.

Dictionary 사용

Dictionary는 key를 통해 접근하여 value에 접근할 수 있습니다.
image

엥 그런데 Optional(29)로 나오네요.. 왜그럴까요?

Dictionary에 없는 key에 접근하게 되면 nil을 반환하기 떄문입니다.

image

추가

Dictionary에 key와 value를 추가하고 싶다면 어떻게 할 수 있을까요?

image

updateValue 메서드를 통해 추가할 수도 있고, key에 value를 넣어주는 방법으로도 추가할 수 있습니다.

Dictionary는 순서가 보장 되어 있지 않기 때문에 순서에 상관없이 출력되는 것을 확인하실 수 있습니다.

삭제

Dictionary의 요소를 삭제하는 방법은 어떻게 할 수 있을까요?

이미 눈치채셨을 수 도 있지만 한 번 확인해보시죠.

image

removeValue 메서드를 사용해 삭제하거나, key에 nil을 넣어주는 방법으로 삭제할 수 있습니다.

이번 포스팅에서는 Dictionary에 대해 간단하게 알아보았습니다.
다음 포스팅에서는 Set 자료형에 대해서 알아보겠습니다.

긴 글 읽어주셔서 감사합니다.
지적 댓글 환영입니다.😄

반응형