Dictionary
Dictionary는 swift를 사용할 때 매우 자주 사용하는 기능이다.
Dictionary 사용법
□ Dictionary 선언
// 빈 딕셔너리 선언
var dic2: [String: Int] = [:]
var dic3 = Dictionary<String,Int>()
→ String, Int 타입으로 구성된 딕셔너리를 비어있게 생성
□ 빈 딕셔너리를 생성하지 않고 선언과 동시에 데이터 값 저장
var dic1: [String: Int] = ["height": 160 , "age": 20]
→ String, Int 타입으로 선언과 동시에 생성이 가능하다.
□ 딕셔너리 한개에 여러 타입을 선언하는 경우
var dic4: [String: Any] = ["name": "A","age" : 10]
var dic5: NSDictionary = ["name": "A","age" : 10]
→ 다음과 같이 Any로 설정하면 된다.
→ NSDictionary로 설정할 수 있다.
□ Key값에 Any를 사용하는 경우
var dic6: [Any:Any] = ["name": "A","age" : 10]
→ Any를 Key값에 사용하는 경우 다음과 같은 오류가 발생한다.
Dictionary 유용한 함수
□ 개수 파악 및 비어있는지 확인
let count = dic1.count //2
let count1 = dic2.count //0
let isEmpty1: Bool = dic1.isEmpty //false
let isEmpty2:Bool = dic2.isEmpty //true
→ 알아 두면 쓸모 있는 지식
Dictionary 접근
let height = dic1["height"] //160
let weight = dic1["weight"] //nil
→ Dictionary에 Key가 존재하는 경우 Key에 맞는 Value를 반환하지만 Key가 없는 경우 nil을 반환한다.
따라서 nil값을 방지하기 위해 default값을 지정한다.
let weight = dic1["weight",default: 40] //40
Dictionary 추가
□ Subscript로 추가
dic1["weight"] = 20
dic1["height"] = 120
→ key값이 있는 경우 update 실행, 없는 경우 추가
□ updateValue를 사용하여 추가
dic1.updateValue(130, forKey: "height")
dic1.updateValue(30, forKey: "weight")
→ key값이 있는 경우 update 실행, 없는 경우 추가하고 nil 반환
Dictionary 삭제
□ Subscript로 추가
dic1["height"] = nil
dic1["weight"] = nil
□ updateValue를 사용하여 추가
dic1.removeValue(forKey: "height")
dic1.removeValue(forKey: "weight")
→ Key가 없는 경우 nil 반환, Key값 존재하는 경우 삭제된 Value 반환
Dictionary Key, Value 나열
dic4.keys
dic4.values
→ key, value를 사용하면 나열 가능하다.
Dictionary 비교
비교 연산자를 사용하여 비교할 수 있지만 Key, Valuerk 정확하게 일치 해야 한다.
대소문자도 비교함
Dictionary 요소 검색
Dictionary를 검색할 때 클로저를 이용하여 검색하는데 클로저의 매개변수 타입은 내가 지정한 Dictionary 타입과 같아야한고 반환타입은 Bool 타입이어야 한다.
□ 클로저를 활용하여 딕셔너리 요소 찾기
let condiction: ((String,Any)) -> Bool = {
$0.0.contains("age")
}
dic4.contains(where: condiction)
dic4.first(where: condiction)
dic4.filter(condiction)
→ contains는 위에 예시들과 같이 요소를 포함하면 true, 아니면 false 반환
→ first는 클로저를 만족하는 첫 번째 요소를 튜플로 리턴( 딕셔너리는 순서가 없기 때문에 호출때 마다 달라질 수 있음)
→ filter 해당 클로저를 만족하는 요소들만 모아서 새로운 딕셔너리로 리턴
# 참고한 사이트
'iOS > 문법' 카테고리의 다른 글
Swift 문법과 친해지기 - Type Casting 와 Any, AnyObject (0) | 2023.01.04 |
---|---|
Swift 문법과 친해지기 - Subscript (0) | 2022.12.31 |
Swift 문법과 친해지기 - 고차함수 (map, filter, reduce) (0) | 2022.12.26 |
Swift 문법과 친해지기 - Set (0) | 2022.12.26 |
Swift 문법과 친해지기 - enum (0) | 2022.12.23 |