SwiftUI

[Swift] 스위프트 딕셔너리 초기화 및 항목 접근과 갱신방법 : removeValue(forKey:) 메서드


딕셔너리는 키-값(key-value) 쌍의 형태로 데이터를 저장하고 관리할 수 있게 해준다. 딕셔너리는 배열과 비슷한 목적의 작업을 실시하지만, 딕셔너리에 저장된 각 항목은 연관된 값을 참조하고 접근하는 데 사용되는 유일한 키(정확하게 말하자면, 키는 특정 딕셔너리 객체에서 유일하다)와 연결되어 있다는 점이 다르다. 현재는 String, Int, Double, 그리고 Bool 데이터 타입만 스위프트 딕셔너리에 키로 사용할 수 있다.
 

스위프트 딕셔너리 초기화

딕셔너리는 순서가 없는 단일 컬렉션에 여러 값을 담기 위해 설계된 특별한 데이터 타입이다. 딕셔너리에 있는 각 항목은 키(key)와 그와 연관된 값(value)으로 구성된다. 키의 데이터 타입과 값 항목 타입은 타입 어노테이션(type annotation)을 이용하여 구체적으로 지정되거나 타입 추론(type inference)을 이용하여 컴파일러가 식별하게 한다.새로운 딕셔너리는 다음 구문을 이용하여 생성 시에 값들의 컬렉션으로 초기화할 수 있다(이것을 딕셔너리 리터럴(dictionary literal)이라고 한다).

var 변수명: [키 타입: 값 타입] = [키1: 값1, 키2: 값2 .... ]
var bookDict = ["100-432112" : "Wind in the Willows",  
                "200-532874" : "Tale of Two Cities",                
                "202-546549" : "Sense and Sensibility",                
                "104-109834" : "Shutter Island"]
                
var bookDict: [String: String] =               
            ["100-432112" : "Wind in the Willows",           
            "200-532874" : "Tale of Two Cities",             
            "202-546549" : "Sense and Sensibility",           
            "104-109834" : "Shutter Island"]

배열처럼 빈 딕셔너리를 생성할 수도 있다. 다음 구문을 살펴보자.

var 변수명 = [키 타입: 값 타입]()

 
다음 코드는 정수형 키와 문자열 값을 저장하기 위하여 설계된 빈 딕셔너리를 생성한다.

var myDictionary = [Int: String]()

 

시퀀스 기반의 딕셔너리 초기화

var bookDict = [1 : "Wind in the Willows",                
                2 : "Tale of Two Cities",                
                3 : "Sense and Sensibility",             
                4 : "Shutter Island"]

 

딕셔너리 항목 개수

딕셔너리의 항목 개수는 count 프로퍼티에 접근하여 얻을 수 있다.

print(bookDict.count)

 

딕셔너리 항목 접근하기와 갱신하기

특정 값은 해당 키를 참조하기 위하여 키 첨자 구문을 이용하면 접근되거나 수정될 수 있다. 다음의 코드는 bookDict 딕셔너리에 있는 키를 참조하며 해당 값을 출력한다(이 예제에서는 Tale of Two Cities다).

print(bookDict["200-532874"])

 
이와 같이 딕셔너리 항목에 접근할 때도 지정된 키에 해당하는 값이 없는 경우에 사용될 디폴트 값을 선언할 수 있다.

print(bookDict["999-546547", default: "Book not found"])

 
마찬가지 방법으로, 특정 키와 연결된 값을 갱신할 수도 있다. 예를 들어, 다음과 같이 Tale of Two Cities라는 제목을 Sense and Sensibility로 바꿀 수 있다.

bookDict["200-532874"] = "Sense and Sensibility"

변경될 값과 해당 키를 전달하여 updateValue(forKey:) 메서드를 호출해도 같은 동작을 한다.

bookDict.updateValue("The Ruins", forKey: "200-532874")

 

딕셔너리 항목 추가하기와 제거하기

다음의 키 첨자 구문을 이용하면 딕셔너리에 항목을 추가할 수 있다.

딕셔너리 변수[키] = 값

예를 들어, 다음과 같이 책 딕셔너리에 새로운 키-값 쌍을 추가할 수 있다

bookDict["300-898871"] = "The Overlook"

어떤 키-값 쌍을 딕셔너리에서 제거할 때는 해당 항목에 nil 값을 할당하거나 딕셔너리 인스턴스의 removeValue(forKey:) 메서드를 호출하면 된다. 다음 코드 두 줄은 모두 책 딕셔너리에서 특정 항목을 삭제하는 같은 결과를 만든다.

bookDict["300-898871"] = nil

bookDict.removeValue(forKey: "300-898871")

딕셔너리 반복

for (bookid, title) in bookDict {    
	print("Book ID: (bookid) Title: (title)")
}

스위프트의 컬렉션은 딕셔너리(Dictionary), 세트(Set) 또는 배열(Array)의 형태를 취한다
 
-알라딘 eBook <핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍> (닐 스미스 지음, 황반석 옮김) 중에서

Leave a Reply

error: Content is protected !!