티스토리 뷰
Array에 이어 생각보다 많이 쓰고 있는 Dictionary에 대해 좀 정리해볼게요.
문법 강의만 들을 때는 이걸 어디다가 쓰지,,,했는데 엄청 쓰네,,,
그래서 알아본
Dictionary는 키와 값의 짝으로 이루어진 배열이에요.
처음보는 스탈이라 처음에는 낯설었지만, 쓰다보면 익숙해지더라구여!
이렇게 말이져?
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
key : "YYZ", "DUB"
value : "Toronto Pearson", "Dublin"
Dictionary
모든 키들은 같은 타입이어야하구요, 마찬가지로 모든 밸류들도 같은 타입이어야 합니다.
key는 중복이 불가능(유일한 값)해요! (value는 중복 가능)
[ ](대괄호) 문법 (subscript)을 쓰며,
순서는 상관없어여! (키로 구별하기 때문에)
옥께이!?
노 오께이,, 다시 정리해봅니다.
딕셔너리 접근하기
딕셔너리에 접근하는 방법은 배열과 유사합니다. 바로 서브스크립트 문법을 사용하면 되거등여.
키 값은 유일한 값이기 때문에 접근할 때는 키 값을 [ ]안에 넣어서 접근해야 해요.
마치 키 값을 통해 검색하는 것처럼 말이져?!
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
responseMessages[200] // Optional("OK")
그리고 해당값에 접근했을 때, 값이 없을수도 있겠져?
그렇기 때문에 값은 Optional값으로 나온답니다.
사용을 원할 때는 옵셔널 바인딩을 통해서 옵셔널 값을 벗겨낸 후 사용해야겠쥬?
빈 딕셔너리 만들기
일단 빈 배열 만들기와 매우 유사쓰!
타입만 [타입:타입]으로 표시해주면 됩니당.
var emptyDictionary1: Dictionary<Int, String> = [:]
var emptyDictionary2: [Int: String] = [:]
var emptyDictionary3 = Dictionary<Int, String>()
var emptyDictionary4: [Int: String] ()
빈 배열은 타입 추론이 안되기 때문에 반드시 타입을 명시해주어야 한다는 점! 잊지 말것,,,
딕셔너리에 요소 삽입/추가/교체하기
딕셔너리에 요소를 추가하려면 대괄호 문법(subscript)을 사용하면 됩니다.
Dictionary[key] = value를 통해 삽입/추가가 가능한데요. 해당 키에 대한 값을 value로 하겠다!라고 생각하면 됩니다.
var responseMessages = [Int: String]()
// Dictionary[key] = value
responseMessages[200] = "OK"
responseMessages[403] = "Access forbidden"
responseMessages[404] = "File not found","
responseMessages[500] = "Internal server error"]
print(responseMessages)
// [200: "OK", 403: "Access forbidden", 404: "File not found", 500: "Internal server error"]
동일한 방법으로 교체도 가능해요.
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
responseMessages[404] = "Not found"
print(responseMessages)
// [200: "OK", 403: "Access forbidden", 404: "Not found", 500: "Internal server error"]
딕셔너리의 요소를 교체할 때는 updateValue(_:forKey:) 메서드를 사용할 수도 있습니당.
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
responseMessages.updateValue("No Error", forKey: 200)
print(responseMessages)
// [200: "No Error", 403: "Access forbidden", 404: "Not found", 500: "Internal server error"]
딕셔너리의 요소 삭제하기
딕셔너리의 특정 요소를 삭제할 때는 추가/삽입/교체와 똑같습니다.
특정 키에 해당하는 값에 nil을 부여해주시면 됩니다.
var responseMessages = [200: "No Error",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
responseMessages[500] = nil
print(responseMessages)
// [200: "No Error", 403: "Access forbidden", 404: "Not found"]
딕셔너리 기본 기능
배열과 같이 딕셔너리도 기본적인 기능이 있어요.
isEmpty를 통해 빈 배열인지, count를 통해 배열의 요소의 갯수를 알려줍니다.
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
// 배열이 비었는지 확인하는 메서드
responseMessages.isEmpty // false
// 배열 갯수를 확인해주는 메서드
responseMessages.count // 4
딕셔너리의 키와 값에 대한 기능
딕셔너리의 경우, 키와 값으로 이루어진 배열이기 때문에 이와 관련된 기능도 있답니다!
keys라는 속성으로 딕셔너리의 키에만 접근이 가능해요.
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
for k in responseMessages.keys {
print(k)
}
// 200
// 403
// 404
// 500
values라는 속성으로 딕셔너리의 값에만 접근이 가능해요.
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
for k in responseMessages.values {
print(k)
}
// "OK"
// "Access forbidden"
// "File not found"
// "Internal server error"
'swift' 카테고리의 다른 글
[swift] Singleton 알아보기 (0) | 2022.03.14 |
---|---|
[swift] Result Type 알아보기 (0) | 2022.02.03 |
[swift] 고차함수 1 - map (0) | 2021.12.28 |
[swift] CaseIterable protocol (0) | 2021.12.11 |
[swift] Collection Type - Array (0) | 2021.12.08 |
- Total
- Today
- Yesterday