티스토리 뷰
안녕하세요 :) 오늘은 Dictionary에 대해서 알아볼거에요
Dictionary는 key와 value로 데이터를 저장하는 컨테이너입니다.
각각의 value는 유일한 키 값에 물려있으며, key값은 Dictionary안에서 value를 찾기 위하 식별자역할을 합니다.
여기에서도 언급했듯이, Dictionary에는 순서가 없습니다. key값으로 value를 찾기때문에 순서가 의미없는 것이죠.
Swift에서 Dictionary는 Dictionary<KeyType, ValueType>형태로 쓰입니다.
유일한 제약사항이 하나 있는데, 반드시 KeyType은 해쉬가능한 타입어야합니다.(Hashable)
즉, 그 자체로 유일하게 표현이 가능한 방법을 제공해야 합니다.
스위프트의 기본 타입(String, Int, Double..등)은 기본적으로 해쉬가능한 것들이므로 Dictionary의 KeyType으로 사용가능합니다 .
또한, Swift의 열거형, 즉 enum역시 해쉬가능하므로 들어갈 수 있습니다.
바로 시작하겠습니다.
Dictionary(사전)
1. Dictionary생성하는 방법
KeyType이 Int고, ValueType이 String인 Dictionary를 생성하는 방법입니다.
var dic : [Int : String] = [:]
var dic2 = [Int : String]()
var dic3 : Dictionary = [Int:String]()
var dic4 : Dictionary<Int, String> = Dictionary<Int, String>()
2. Dictionary 생성과 동시에 초기화
var dic : [Int : String] = [1:"zedd", 2:"swift", 3:"iOS"]
var dic2 = [1:"zedd", 2:"swift", 3:"iOS"]//타입유추. [Int:String]인 Dictionary구나
var dic3 : Dictionary = [1:"zedd", 2:"swift", 3:"iOS"]
var dic4 : Dictionary<Int, String> = [1:"zedd", 2:"swift", 3:"iOS"]
//모두 [1:"zedd", 2:"swift", 3:"iOS"]를 넣었지만, 출력이 이순서대로 된다고 보장할 수 없다. Dictionary는 순서가 없기때문
3. Dictionary값 수정
(이제 메소드를 사용하고 나서의 Dictionary안의 값들이 어떻게 변했는지 보여드릴텐데요, 임의로 Key순서대로 나타내도록 하겠습니다.
다시한번 말씀드리지만, Dictionary안의 순서는 의미가 없습니다. 실제로 Print해보시면 순서가 뒤죽박죽인 것을 볼 수 있을거에요.)
var dic : [Int : String] = [1:"zedd", 2:"swift", 3:"iOS"]
dic.updateValue("fun", forKey: 3)
print(dic)//[1:"zedd", 2:"swift", 3:"fun"]
dic[3] = "iOS"
print(dic)//[1:"zedd", 2:"swift", 3:"iOS"]
4. Dictionary에 값 추가
var dic : [Int : String] = [1:"zedd", 2:"swift", 3:"iOS"]
dic.updateValue("fun", forKey: 4 )//주의 : updateValue는 Optional값을 반환함
print(dic)//[1:"zedd", 2:"swift", 3:"iOS", 4:"fun"]
dic[5] = "Hello"
print(dic)//[1:"zedd", 2:"swift", 3:"iOS", 4:"fun", 5:"Hello"]
5. Dictionary에 값 접근
var dic : [Int : String] = [1:"zedd", 2:"swift", 3:"iOS"]
print(dic[1]!)//zedd
print(dic[2]!)//swift
print(dic[3]!)//iOS
var dic2 : [String : Int] = ["zedd":30, "swift":40,"iOS":50]
print(dic2["zedd"]!)//30
print(dic2["swift"]!)//40
print(dic2["iOS"]!)//50
//key의 값으로 접근이 가능
var dic3 : [String : String] = ["zedd":"30", "swift":"40","iOS":"50"]
print(dic3["30"]) //nil. "30"을 Value로 가지는 쌍은 있지만, "30"을 Key로 가지는 쌍이 없기때문.
//무조건 Key값으로 접근해야 Value를 얻어올 수 있음.
6. Dictionary로 for문 도는법
dic = [1:"zedd", 2:"swift", 3:"iOS", 4:"fun", 5:"Hello"]
for (key,value) in dic{
print(key) //1 2 3 4 5
}
for (key,value) in dic{
print(value)// zedd swift iOS fun Hello
}
for (key,value) in dic{
print("\(key):\(value)") // 1:zedd 2:swift 3:iOS 4:fun 5:Hello
}
//for문 결과 역시 원래는 순서가 뒤죽박죽입니다.
7. Dictionary 값 삭제.
dic = [1:"zedd", 2:"swift", 3:"iOS", 4:"fun", 5:"Hello"]
dic.removeValue(forKey: 5)
print(dic)//[1:"zedd", 2:"swift", 3:"iOS", 4:"fun"]
dic.removeAll()//Dictionary의 모든 Key와 Value를 삭제
print(dic) //[:]
dic = ["zedd": 1] //error! [Int:String]타입의 Dictionary였으므로. 타입을 바꿔줄 수 없다.
'Swift' 카테고리의 다른 글
Swift3 ) How to convert Array/Dictionary/Set to String in Swift(배열/집합/사전을 문자열로 바꾸는 방법) (0) | 2017.07.13 |
---|---|
Swift3 ) Collection - Set사용해보기 (1) | 2017.07.12 |
Swift3 ) How to convert string to an array in Swift ( 문자열을 배열로 바꾸는 방법) (2) | 2017.07.10 |
Swift3 ) Array사용해보기 (2/2) (1) | 2017.07.02 |
Swift3 ) Array사용해보기(1/2) (0) | 2017.07.01 |
- Swift
- 스위프트 문법
- actor
- swift delegate
- 피아노
- swift tutorial
- WKWebView
- np-hard
- fastlane
- Xcode
- swift array
- IOS
- SwiftUI
- 스위프트
- swift3
- FLUTTER
- WWDC
- iOS delegate
- 회고
- ios 13
- Combine
- Git
- np-complete
- UIBezierPath
- swift 공부
- github
- WidgetKit
- swift sort
- Accessibility
- 제이슨 파싱
- Total
- Today
- Yesterday