딕셔너리는 순서와 상관없이 콜렉션에 같은 타입의 키와 같은 타입의 값을 저장한다. 각 값은 딕셔너리 내부에서 값에 대한 식별자로 동작하는 유니크한 키와 조합된다. 딕셔너리에는 순서가 없다. 딕셔너리는 Foundation 모듈의 NSDictionary클래스와 연결된다.
스위프트의 딕셔너리 타입은 Dictionary<Key, Value>로 적어주며 Key는 딕셔너리의 값을 조회하는 값이며, value는 저장되는 값이다.<>안에는 각 키와 값의 타입을 명시해준다.
배열과 마찬가지로 초기화 구문을 통해 빈 딕셔너리 생성이 가능하다.
var names = [Int : String]()
// 이는 키 값이 Int 값이 String의 타입을 지니는 딕셔너리이다.
배열의 리터럴과 비슷한 딕셔너리 리터럴로 딕셔너리 초기화가 가능하다. 딕셔너리에서 키-값 쌍의 키와 값은 콜론으로 구분된다.
var value : [String : String] = ["LUT" : "Luton", "KVF" : "Korea"]
var value = ["LUT" : "Luton", "KVF" : "Korea"]
//다음과 같이 딕셔너리 리터럴을 통해서 초기화 가능하다.
//타입을 명시하지 않는 경우 타입유추로 에러가 발생하지 않는다.
딕셔너리의 메소드와 프로퍼티, 서브스크립트 구문을 통해서 접근과 수정이 가능하다.
print(value.count)
//다음의 경우 2를 출력한다.
if value.isEmpty {
print(value)
}
//딕셔너리 배열이 비어있는 여부를 부울 프로퍼티로 확인이 가능하다.
서브 스크립트 구문을 통해서 새로운 아이템 추가 및 수정이 가능하다.
value["USA"] = "America"
//다음 서브스크립트를 통해서 딕셔너리 추가가 가능하며 아이템은 총 3개가 된다.
value["USA"] = "Nothern America"
//있는 딕셔너리에 대해 다음과 같이 쓸 경우 기존의 값을 변경해줄 수 있다.
value["USA"] = nil
//딕셔너리 키에 nil을 할당해서 딕셔너리를 삭제할 수 있다.
for 루프를 통해 딕셔너리 키-값쌍 반복이 가능하다. 딕셔너리 각 아이템은 (key, value)의 튜플로 반한되며 이를 임시 상수 및 변수로 분리가 가능하다.
for (airCode, airName) in value {
print(airCode)
}
//다음과 같이 튜플값을 나누어서 핸들링이 가능하다.
딕셔너리 keys와 values 프로퍼티를 사용해서 반복 가능한 콜렉션을 가져올 수 있다.
for airCode in value.keys {
print(airCode)
}
for airName in value.values {
print(airName)
}
//다음과 같이 키 값들에 대한 반복문만 돌릴수도 있다.
딕셔너리의 키 또는 값을 Array 인스턴스의 API를 사용해야 할 경우 keys 또는 values 프로퍼티로 새로운 배열을 초기화 해야한다.
let airCodes = [String](value.keys)
let airNames = [String](value.values)
//다음과 같이 키 와 값들에 대한 반복문만 돌릴수도 있다.