티스토리 뷰
안녕하세요! 멍구입니다 ^-^//
오늘은 딕셔너리의 값을 읽고, 쓰고, 업데이트하고, 제거하고, 처리하는 등의 기본적인 방법을 알아보겠습니다. 🤗
swift Getting and Setting Dictionary Values
딕셔너리 값 읽고 쓰기
swift에서 dictionary에 접근할 수 있는 가장 보편적인 방법은 키 첨자를 활용해서 dictionary에 접근하는 것입니다.
var dic: [String: Int] = ["key": 10]
print(dic["key"])
// output : Optional(10)
위의 코드는 Key값이 String, Value값이 Int 타입인 딕셔너리의 활용 모습입니다.
dic 딕셔너리에 "key" 문자열을 통해 해당 키에 맞는 값인 10을 출력하고 있습니다. dictionary의 접근 값은 optional로서 읽어오게 됩니다. 왜 값을 옵셔널(optional)로서 가져오는 걸까요? 왜냐하면 딕셔너티에 특정 키를 통해 접근 할 때 해당 키에 대응되는 value값이 존재하지 않을 수 있기 때문에 옵셔널 타입의 값이 반환되는 것이죠.
// 옵셔널 바인딩을 통한 값 추출
// result : 10
if let result = dic["key"] {
print(result)
}
// 강제 언래핑을 통한 값 추출
// result : 10
print(dic["key"]!)
dictionary 키에 대응되는 값을 논 옵셔널(non-optional)로서 사용해야한다면, 옵셔널 바인딩을 사용하거나, 강제 언래핑을 사용해서 논옵셔널 값을 얻어낼 수 있습니다.
이어서 또다른 딕셔너리(dictionary) 활용 예제를 보도록 하겠습니다.
아래의 예제는 딕셔너리를 통해 http 응답 코드에 따른 응답결과를 얻어내는 예제입니다.
let httpResponseCodes = [200, 403, 301]
let responseMessages: [Int: String] = [200: "OK", 403: "Access Forbidden"]
for code in httpResponseCodes {
if let message = responseMessages[code] {
print("Response \(code): \(message)")
} else {
print("Unknown response \(code)")
}
}
// - result)
// Response 200: OK
// Response 403: Access Forbidden
// Unknown response 301
딕셔너리인 responseMessage 에서는 음답코드에 따른 메세지를 담고 있습니다.
if let 조건문 블럭 내에서 옵셔널 바인딩을 통해서 특정 응답값에 대한 value값이 존재하는지 확인 후 만약 특정 키에 대응되는 value값이 존재한다면 그에 맞는 메세지를 출력하고, 없다면 "Unknown response 301"을 출력하게 됩니다.
딕셔너리(dictionary) 갱신, 제거하는 방법
상수선언(let)이 아닌 변경가능한 variable형태의 var로 선언된 딕셔너리라면, 기존의 키-값을 갱신하고, 제거할수도 있습니다.
var responseMessages: [Int: String] = [200: "OK", 403: "Access Forbidden"]
responseMessages[200] = "This is good code ^-^"
print(responseMessages[200])
// output : Optional("This is good code ^-^")
기존의 키값을 갱신하는 방법 중 하나는 기존 키값에 다른 값을 할당하는 것입니다.
위의 경우 responseMessages의 200 키값에 대해 새로운 문자열 값을 할당하여 갱신해주는 모습을 볼 수 있습니다.
responseMessages[200] = nil
print(responseMessages[200])
// output : nil
기존의 키값을 제거하는 방법 중 하나는 해당 키에 대해 nil 값을 할당하는 것입니다.
위와 같이 nil을 할당해서 해당 키에 대한 값을 제거할 수 있습니다.
var interestingNumbers = ["primes": [2, 3, 5, 7, 11, 13, 17],
"triangular": [1, 3, 6, 10, 15, 21, 28],
"hexagonal": [1, 6, 15, 28, 45, 66, 91]]
for key in interestingNumbers.keys {
interestingNumbers[key]?.sort(by: >)
}
print(interestingNumbers["primes"]!)
// Prints "[17, 13, 11, 7, 5, 3, 2]"
딕셔너리의 Key은 Hashable 프로토콜을 준수하는 값이어야 하지만, value값은 어떠한 값(Any type)도 들어갈 수 있습니다.
즉, key에 대응되는 value 값으로는 배열 값도 들어갈 수 있습니다. 위의 코드는 딕셔너리의 키에 대응되는 배열값을 내림차순 정렬한 뒤 그 결과를 출력하는 모습입니다.
이처럼 딕셔너리의 키에 대응되는 value값에 다양한 값을 저장할 수 있으며, 이를 삭제하거나 업데이트할수도, 정렬하고 변형할 수도 있습니다.
다음에 좀더 다양한 딕셔너리 활용 예시를 다뤄보겠습니다.
관련 애플 개발자 문서 링크
'iOS 개발 > 개발자문서 정보' 카테고리의 다른 글
swift iOS 비정렬 비중복 컬렉션, Set 개요 알아보기 (0) | 2020.06.15 |
---|---|
iOS swift Dictionary, 딕셔너리 값 순회탐색하는 방법 (0) | 2020.06.14 |
iOS 앱에 Core ML 모델 통합해서 사용하는 방법 (0) | 2020.05.31 |
iOS앱에 사용할 CoreML Model 얻고 활용하기 (0) | 2020.05.30 |
iOS NLLanguageRecognizer로 문자열 언어 분석하기 (0) | 2020.05.27 |
- Total
- Today
- Yesterday
- 알고리즘문제
- swift string
- 백준swift
- 자연어처리
- 컬렉션
- swift 기초
- swift언어
- SwiftUI
- 알고리즘
- createML
- 스위프트
- 김프매매
- 프로토콜
- uikit
- swift reduce
- CoreML
- Protocol
- publisher
- ios
- swift 문자열
- 백준알고리즘
- 부스트코스
- 프로그래머스swift
- Swift 알고리즘
- swift알고리즘
- swift문제
- 프로그래머스
- 개발자문서
- swift
- Collection
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |