본문 바로가기
모바일앱/Swift

Collection - Dictionary

by GeekCode 2021. 10. 10.
반응형

순서단위인 Array와 달리 의미단위로 찾을때 유용하다.

Array는 순서기반으로 찾고 

Dictionary는 의미기반으로 찾음 ex) 학생들의 점수관리

import UIKit
//
//var scoreDic: [String:Int] = ["Jason": 80, "Jay": 95, "Jake":90]
////dictionary는 두가지 타입을 정의한다. [key: Value]
//
////var scoreDic: Dictionary<String, Int> = ["Jason": 80, "Jay": 95, "Jake":90]
//scoreDic["Jason"]
//scoreDic["Jay"]
//scoreDic["Jerry"] //nil
//
////있을수도 없을 수도 있기 때문에 안정적으로 가져올려면 옵셔널 바인딩으로
//if let score = scoreDic["Jason"] {
//    score //80
//} else {
//    //...score없음
//}
//
//// -----> 컬렉션 공통 프로퍼티
//scoreDic.isEmpty //false
////scoreDic = [:]
////scoreDic.isEmpty //true
//scoreDic.count
//
////기존 사용자에 새로운 값을 할당할때
//scoreDic["Jason"] = 99
//scoreDic //["Jake": 90, "Jay": 95, "Jason": 99]
//// 사용자 추가
//scoreDic["Jack"] = 100
//scoreDic //["Jack": 100, "Jake": 90, "Jay": 95, "Jason": 99]
//// 사용자 제거
//scoreDic["Jack"] = nil
//scoreDic //["Jay": 95, "Jake": 90, "Jason": 99]
//
//
//
////For Loop 반복적으로 사용가능
//
//for (name, score) in scoreDic {
//    print("\(name), \(score)")
//}
///*
// Jason, 99
// Jake, 90
// Jay, 95
//*/
//
//for key in scoreDic.values {
//    print(key)
//}
///*
// Jason
// Jay
// Jake
//*/
//
//for key in scoreDic.values {
//    print(key)
//}
///*95
// 99
// 90
//*/



// **도전과제**
//1. 이름, 직업, 도시에 대해서 본인의 딕셔너리 만들기
//2. 여기서 도시를 부산으로 업데이트 하기
//3. Dictionary를 받아서 이름과 도시를 프린트하는 함수 만들기

//---->1번문제
var AccountInfo: [String:String] = ["name":"Gikko", "job": "Teacher", "city":"Seoul"]
print(AccountInfo) //["city": "Seoul", "name": "Gikko", "job": "Teacher"]
//---->2번문제
AccountInfo["city"] = "Busan"
//---->3번문제
// 내가 푼것.
//func printName() {
//    print(AccountInfo["name"])
//}
//printName() // 옵셔널로 결과값이 등장 -> 옵셔널 바인딩 사용하기


func printNameAndCity(dic:[String: String]) {
    if let name = dic["name"], let city = dic["city"] {
//        print("\(name), \(city)") //Gikko, Busan
        print(name, city) //Gikko Busan
    } else {
        print("---> Cannot find")
    }
}
printNameAndCity(dic: AccountInfo) //Gikko Busan
반응형

'모바일앱 > Swift' 카테고리의 다른 글

Struct만들기 도전과제  (0) 2021.10.12
구조체와 클래스의 차이점  (0) 2021.10.11
Collection - Closure, Capturing Values  (0) 2021.10.10
Collection - Set  (0) 2021.10.10
Collection - Array  (0) 2021.10.09
옵셔널 도전과제  (0) 2021.10.08
옵셔널  (0) 2021.10.07
함수의 고급기능(1. 오버로드 2. In-out parameter 3. 함수안에 함수를 넣기)  (0) 2021.10.06