Dog foot print

[SWIFT] Dictionary 본문

IOS/Swift

[SWIFT] Dictionary

개 발자국 2021. 7. 5. 17:40

Dictionary란

key이 쌍으로 이루어진 집단 자료형이다.

// [키 : 값]
let countries = ["korea" : "seoul"]

딕셔너리 제약

  • 하나의 키는 하나의 데이터에만 연결되어야 한다.
  • 하나의 딕셔너리에서 키는 중복될 수 없고, 만약 이를 중복으로 처리하면 해당 키의 값이 재 할당된다.
  • any 타입을 이용해서, valuekey의 타입 제한을 없앨 수 있지만 다른 이를 위해 값은 항상 같은 타입의 데이터가 할당 되어야 한다.
  • 딕셔너리는 아이템의 순서를 보장해주지 않는다. 즉 늦게 할당한 AB보다 뒤에 있으리라는 보장이 없다.
  • Key는 타입 제한이 없지만, 해당 클래스가 Hashable 프로토콜을 구현해야 한다.

딕셔너리 선언과 초기화

let d_1 = ["hi" : "hello"];
let d_2 = Dictionary<String,String>()
let d_3 : [String : String] = [ : ]
var d_4 : [String : String];

Note : 딕셔너리의 리터럴은 ArraySet과 유사하기 때문에, 주의를 해야 한다.

딕셔너리 동적 삽입과 수정

var d_1 = ["hi" : "hello"];
d_1.updateValue("hello",forKey : "hi") = "hi"; //(key : "hi", value : "hello")
d_1.updateValue("반갑습니다.",forKey : "hi")

var countries = ["korea" : "seoul"];
countries["korea"] = "daegu";
countries["japan"] = "tokyo";

딕셔너리의 동적 삽입과 수정은 updateValue메서드로 실행된다. 이 메서드는 해당 키의 value가 존재한다면 해당 값을 수정 해주지만 존재하지 않을 때는 해당 키에 값을 할당 한다. 다른 방법으로 []를 사용하여, 키를 명시하는 방법도 있다.

딕셔너리 삭제와 읽기

var countries = ["korea" : "seoul"];

countries["korea"] = "daegu";
countries["japan"] = "tokyo";

countries.removeValue(forKey: "korea");
print(countries["japan"])
countries["japan"] = nil;
print(countries)

딕셔너리의 삭제는 removeValue(forKey : ) 를 사용하는 방법과 nil을 삭제하고자 하는 키에 할당하는 것이다.

딕셔너리 순회

var countries = ["korea" : "seoul"];

countries["korea"] = "daegu";
countries["japan"] = "tokyo";

for (key , value) in countries {
    print("\(key)의 수도는 \(value)입니다.") 
}

딕셔너리는 튜플의 집단 자료형이기 때문에, 순회를 하게 되면 위와 같은 모습으로 분해 된다.

반응형

'IOS > Swift' 카테고리의 다른 글

[SWIFT] 함수 시작하기  (0) 2021.07.07
[SWIFT] Optional  (0) 2021.07.05
[SWIFT] Set 집합  (0) 2021.07.01
[SWIFT] 문자열 보간법과 트리플 쿼우팅  (0) 2021.06.30
[SWIFT] 기본 자료형[2]  (0) 2021.06.29
Comments