티스토리 뷰

반응형

 

 

 

안녕하세요! 멍구입니다 ^-^//
오늘은 딕셔너리의 값을 읽고, 쓰고, 업데이트하고, 제거하고, 처리하는 등의 기본적인 방법을 알아보겠습니다. 🤗

 

 


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값에 다양한 값을 저장할 수 있으며, 이를 삭제하거나 업데이트할수도, 정렬하고 변형할 수도 있습니다. 

 


 

다음에 좀더 다양한 딕셔너리 활용 예시를 다뤄보겠습니다. 

 

관련 애플 개발자 문서 링크

 

Dictionary - Swift Standard Library | Apple Developer Documentation

Generic Structure Dictionary A collection whose elements are key-value pairs. Declaration@frozen struct Dictionary where Key : Hashable OverviewA dictionary is a type of hash table, providing fast access to the entries it contains. Each entry in the table

developer.apple.com

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함