320x100
728x90
📌 딕셔너리(Dictionaries)
- 순서와 상관없이 콜렉션에 같은 타입의 키(key)와 같은 타입의 값(value)를 저장함.
- 특정 순서를 갖고 있지 않음
- 식별자를 기준으로 값을 찾을 때 유용
1️⃣ 딕셔너리 생성
Dictionary<Key, Value>로 적으며, Key는 딕셔너리 키로 사용되고 Value는 딕셔너리에 저장될 값의 타입임
혹은 아래와 같이
[Key : Value] 와 같이 짧은 형식으로 작성할 수도 있음 (짧은 형식 더 선호❗)
var dic = [Int:String]()
2️⃣ 값 넣기
dic[16] = "sixteen"
// key가 16이고 value는 sixteen
dic = [:]
// 빈 dictionary로 초기화
3️⃣ 딕셔너리 리터럴로 딕셔너리 생성
키-값 쌍으로 콜론으로 구분하여 딕셔너리 작성
집합과 다르게 타입 생략 가능
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
// 타입 생략 딕셔너리 초기화
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
4️⃣ 값 추가 혹은 수정
airports["LHR"] = "London"
// 값 수정
airports["LHR"] = "London Heathrow"
⭐ updateValue를 통한 값 수정
updateValue는 값을 업데이트 하지만 업데이트 되기 전 값을 반환한다.
updateValue 메서드 : 해당 키에 값이 존재하지 않으면 값을 설정하고
값이 존재하면 값을 업데이트 함
* 업데이트 수행 후 이전 값을 반환함
if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
print("수정 전 값 : \(oldValue).")
}
// 수정 전 값 : Dublin. 출력
5️⃣ 해당 키에 대한 값이 존재하는 지 확인
if let isValueIn = airports["DUB"] {
print("공항 이름은 \(isValueIn) 입니다.")
}else{
print("존재하지 않습니다.")
}
6️⃣ 딕셔너리 값 삭제
APL - Apple International 이라는 키- 값 쌍을 제거하고 싶으면
딕셔너리의 해당 키에 nil을 할당하면 된다.
// APL 키- 값 생성
airports["APL"] = "Apple International"
// 잘못된 추가로 삭제원할 때 : nil 할당
airports["APL"] = nil
⭐ removeValue를 통한 값 삭제
removeValue 매서드 : 키 - 값 쌍이 존재하면 삭제하고, 삭제된 값을 반환
존재하지 않으면 nil 반환
if let remove_val = airports.removeValue(forKey: "DUB") {
print("삭제된 공항의 이름은 : \(remove_val).")
} else {
print("해당 정보가 없습니다.")
}
// 삭제된 공항의 이름은 : Dublin 출력됨
7️⃣ 딕셔너리 반복
for (code, name) in airports {
print("\(code) : \(name)")
}
키 혹은 값만 출력하고 싶을 때,
/* 키 혹은 값만 출력*/
// key만 출력
for airportCode in airports.keys{
print("\(airportCode)")
}
// LHR
// YYZ
// value만 출력
for airportName in airports.values {
print("\(airportName)")
}
// London Heathrow
// Toronto Pearson
8️⃣ 딕셔너리 키-값 뽑아서 배열에 넣기
let airportCodes = [String](airports.keys)
// airportCodes is ["LHR", "YYZ"]
let airportNames = [String](airports.values)
// airportNames is ["London Heathrow", "Toronto Pearson"]
딕셔너리는 순서를 보장하지 않기 때문에,
정렬하고 싶다면 sorted() 매서드를 사용하자
출처 : https://bbiguduk.gitbook.io/swift/language-guide-1/control-flow
728x90
반응형
'IOS > Swift' 카테고리의 다른 글
[Swift] 열거형(Enumerations) (0) | 2023.01.16 |
---|---|
[Swift] 제어 변경 구문과 guard 구문 (0) | 2022.12.29 |
[Swift] 콜렉션(Collection) 타입(2) - 집합(Set) (0) | 2022.12.27 |
[Swift] 콜렉션(Collection) 타입(1) - 배열(Array) (0) | 2022.12.27 |
[Swift] 문자열과 문자 (0) | 2022.12.26 |