코딩
Swift 딕셔너리에서 값 가져오기 본문
딕셔너리에서 값 가져오기
key 값 가져오기
key를 출력하는것은 쉽다. 다른 언어와 다를 바가 없다.
var dict1 = [Int:String]()
dict1[0] = "Hi"
dict1[1] = "Bye"
dict1[2] = "Seeyou"
for (key, value) in dict1{
print(key)
}
print(dict1.keys) // 1
for key in dict1.keys{ // 2
print(key)
}
이런식으로도 가져올 수 있는데, 단 나온 결과 값은 print할 때마다 다르고 배열로 반환되지 않는다.(따라서 하나씩 접근할 수 없다.)
그러니 결국 key값을 하나하나 가져오려면 2번째와 같이 해줘야한다.
value 값 가져오기
var dict1 = [Int:String]()
dict1[0] = "Hi"
그러면 for를 쓰지않고 이 "Hi"를 어떻게 가져와야할까?
흔히들 그냥 print(dict1[0])을 하면 되는거 아니야? 라고 생각할수 있지만
만약그렇게 해버린다면,
Optional이 씌워진 값이 출력된다.
그렇기 때문에 "Hi" == dict1[0]를 하면 오류가 날때가 있고 이럴 땐, dict1[0]뒤에 Optional값을 Unwrap하는 !를 붙여주어야한다.
if dict1[0]! == "Hi"{
print("Same")
} // Output: "Same"
Tuple value값 가져오기
만약, value가 tuple이라면 이 값을 어떻게 가져와야 할까?
var dict1 = [Int:(String,String)]()
dict1[0] = ("Hi", "Bye")
dict1[1] = ("See", "you")
print(dict1[0])
이는 꼭 .숫자 값으로 가져와야한다. 스위프트는 튜플을 [0] [1]과 같이 접근하지 않고 .숫자 로 접근한다.
print((dict1[0]?.0)!) //Output "Hi"
튜플 값에 접근하려면 Optional(("Hi, "Bye"))로 묶여진 값에서 멤버를 조회하기 위해 ? 를 붙여주어야하고,
마찬가지로 이 조회한 값 Optional("Hi")에서 에서 옵셔널을 없애고 온전히 써주려면 !를 붙이는걸 잊지말아야한다.
Map 사용하기
var dict1 = ["Hi": "Bye", "Hey": "Hoi"]
var keys = dict1.map{$0.0}
var values = dict1.map{$0.1}
print(keys, values) // Output ["Hi", "Hey"] ["Bye", "Hoi"]
이렇게 Map을 사용하면 좀 더 간단하게 값들을 불러올수 있다.
그리고 이경우 map은 배열 형태로 반환하여 배열값으로 접근할 수 있는데, 이 때는 Optional 값이 wrapping 되지 않는다.
var dict1 = ["Hi": "Bye", "Hey": "Hoi"]
var keys = dict1.map{$0.0}
var values = dict1.map{$0.1}
print(keys[0]) // Output "Hi"
'Swift' 카테고리의 다른 글
Swift 공공데이터 parsing (0) | 2021.07.09 |
---|---|
Swift combination구현 (0) | 2021.07.01 |
Swift String 자르기 (0) | 2021.06.30 |
Xcode playground 사용하기 (+문제점) (0) | 2021.06.29 |
Comments