코딩

Swift 딕셔너리에서 값 가져오기 본문

Swift

Swift 딕셔너리에서 값 가져오기

ssooyn_n 2021. 6. 30. 17:36

딕셔너리에서 값 가져오기

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