스위프트에서 컬렉션 타입인 딕셔너리를 살펴보겠습니다. 딕셔너리는 키와 값으로 이루어진 하나의 쌍을 값으로 저장합니다. 즉, 묶음으로 이루어진 한 쌍이 딕셔너리의 값이 되는 것입니다.
하나의 딕셔너리 안에 키는 중복될 수 없지만, 값을 중복이 가능합니다. 예를 들어 나와 친구들의 키는 같을 수 있지만, 나와 친구들 자체가 같을 수는 없는 것과 동일한 이치입니다.
1. 딕셔너리(Dictionary) 생성
var weightOfperson: Dictionary<String, Int> = Dictionary<String, Int>() // 키가 String, 값이 Int인 타입의 딕셔너리를 이니셜라이저를 통해 생성합니다. var ageOfperson: [String: Int] = [:] // 키가 String, 값이 Int 타입임을 [:]안에 명시하면 딕셔너리를 의미합니다. 뒤에 [:]는 이니셜라이저를 간단하게 표현합니다. var tallOfperson: [String: Int] = ["Kim": 180, "Lee": 175, "Park": 172] // 딕셔너리를 생성함과 동시에 여러 쌍의 값으로 초기화할 수 있습니다. |
2. 딕셔너리(Dictionary) 기본 프로퍼티
print(tallOfperson["Kim"]) // 키의 값을 입력하면 값에 해당하는 결과를 얻을 수 있습니다. 키가 존재하지 않으면 nil을 반환합니다. tallOfperson["Choi"] = 185 print(tallOfperson["Choi"]) // 임의의 키 값을 넣고 해당하는 값으로 입력해주면 딕셔너리에 추가됩니다. print(tallOfperson.removeValue(forKey: "Kim")) // removeValue 프로퍼티에 키를 전달함으로써 해당 값을 삭제할 수 있습니다. 반환 값을 해당 키에 대한 값입니다. print(tallOfperson["Kim", default: 180]) // Kim의 값을 출력하되, 없다면 180을 출력하라는 의미입니다. print(tallOfperson.isEmpty) print(ageOfperson.isEmpty) // 딕셔너리 안의 값이 존재하는지 여부를 판단할 수 있습니다. print(tallOfperson.count) // 현재 딕셔너리 안의 몇 쌍의 값이 존재하는지 확인할 수 있습니다. |
3. 딕셔너리(Dictionary) 일대다 대응
var companyThings = ["Apple": ["iPhone", "iPad", "AirPod"], "samsung": ["Galaxy", "Galaxy Note"], "LG": ["G","V"]] // 하나의 키에 여러 가지 값을 대응시킬 수 있습니다. Apple은 여러 가지의 제품을 가지고 있습니다. print(companyThings["Apple"]!) // ["iPhone", "iPad", "AirPod"] 를 출력합니다. |
4. 딕셔너리(Dictionary) 활용
let mainThings = ["Apple": "iPhone", "samsung": "Galaxy", "Microsoft": "Windows"] for (main, company) in mainThings { print("'\(main)' make '\(company)'.") } // 순서가 의미없는 딕셔너리를 위와 같이 출력하면, 키-값 쌍을 튜플의 요소로 반환해서 출력합니다. let findCompany = mainThings.firstIndex(where:{ $0.value.hasPrefix("iPhone")}) |
'스위프트(Swift)' 카테고리의 다른 글
스위프트(Swift) - 컬렉션 타입 세트(set) (0) | 2020.11.07 |
---|---|
스위프트(Swift) - 열거형(enum) (0) | 2020.11.04 |
스위프트(Swift) - 사용자 데이터 타입 튜플(Tuple) 사용 방법 (0) | 2020.10.29 |
스위프트(Swift) - 컬렉션 타입 배열(Array) 사용 방법 (0) | 2020.10.27 |
스위프트(Swift) - 데이터 타입(자료형) (0) | 2020.10.26 |