본문 바로가기
iOS/Swift

[Swift] 컬렉션 타입 (Dict)

by Jiseong 2021. 8. 2.

사정이 생겨서 그동안 공부를 못했다.

 

한번 더 훑어봐야겠다.

 

2021.06.05 - [Dev/Swift] - [Swift] 컬렉션 타입 (Set)

 

[Swift] 컬렉션 타입 (Set)

전에 배열을 정리해봤다 2021.06.03 - [Dev/Swift] - [Swift] 컬렉션 타입 (Array) [Swift] 컬렉션 타입 (Array) Swift는 Array, Dictionary, Set 세가지의 컬렉션 타입을 지원한다. 오늘은 그 중 배열 배열 (Arr..

limjs-dev.tistory.com

오늘은 Dictionary

 

Dictionary

 

Dict는 Key와 Value 한쌍을 데이터로 저장하는 창고?이다.

Set와 같이 Dict에는 순서가 없다.

각 Value는 해당 Value의 식별자 역할을 하는 Key와 연결이 되어있고 그 Key로 Value를 찾기때문에 순서가 필요없는 것이다.

마치 우리가 사전에 정의되있는 뭐.. 예를 들면 CPU에 대해서 알고싶을 때 우린 'CPU'를 검색하지 그것에 대한 정의로 검색하지 않는 것처럼 굳이 순서가 필요하지 않은 것이다.

물론 우리가 쓰는 사전엔.. ABC나 ㄱㄴㄷ순서는 있지만..

 

Swift Dictionary의 유형은 모두 Dictionary<Key, Value>로 작성된다.

또한 A dictionary Key type must conform to the Hashable protocol, like a set’s value type.

Set의 Value값과 같이 Dict의 Key값은 반드시 Hashable한 값이여야한다.

즉.. 유일한 값이어야한다. 중복이 되면 필요한 값을 찾거나 비교할 수 없으니깐 말이다.

 

 

Dictionary 생성

 

var dict: [Int:String]
var dict1 = [Int:String]()
var dict2: Dictionary = [Int:String]()
var dict3: Dictionary<Int,String> = Dictionary<Int,String>()

 

Dict 초기화

 

var dict: [Int:String] = [1:"홍어", 2:"회", 3:"삼합"]
var dict1 = [1:"홍어", 2:"회", 3:"삼합"] //타입 유추
var dict2: Dictionary = [1:"홍어", 2:"회", 3:"삼합"]
var dict3: Dictionary<Int,String> = [1:"홍어", 2:"회", 3:"삼합"]

너무 더워서 간만에 카페왔는데 고개 들면 보이는 간판이 홍어회삼합이길래..

dict1은  []만 보면 array로 유추할 수 있겠지만 Key:Value 값을 보고 Dict로 유추한다.

 

 

Dict 추가및 삭제

 

dict[5] = "어죽"
dict[4] = "전문"
dict.updateValue("분점문의", forKey: 6) //updateValue 메소드는 optional값 반환

print(dict) //[3: "삼합", 5: "어죽", 4: "전문", 6: "분점문의", 1: "홍어", 2: "회"]

dict.removeValue(forKey: 6) //맛이 없어서 분점문의가 안들어옴
print(dict) //[5: "어죽", 4: "전문", 3: "삼합", 1: "홍어", 2: "회"]

위에서도 말했지만 Dictinary는 순서가 없다. 프린트할 때마다 순서가 계속 바뀐다.

5번,7번 줄 프린트값이 다른 이유는 내가 테스트 하고 바로바로 티스토리 코드박스에 집어 넣느라..

 

Dict에 접근할때는 옵셔널이 씌워져있으므로 해제

'iOS > Swift' 카테고리의 다른 글

[Swift] Class & Structure  (0) 2021.08.11
계산기  (0) 2021.08.07
[Swift] 컬렉션 타입 (Set)  (0) 2021.06.05
MAC Xcode 신뢰할 수 없는 개발자 설정 방법  (0) 2021.06.04
[Swift] 컬렉션 타입 (Array)  (0) 2021.06.03

댓글