본문 바로가기

Swift-IOS

Swift: array, dictionary, set, tuple, enum

Array

- [] 를 이용해서 선언

- 개별 아이템 접근시 index를 이용 

- index 범위 내에서 잘 처리될 수 있도록 구현

- 0부터 시작

 

빈 배열 선언

var arr: [Int] = []
var arr2 = [Int]()

Dictionary

- Key : Value 형태로 저장되는 자료구조

- Any : 어떠한 타입이 들어와도 괜찮다.

 

빈 딕셔너리 선언

var dic: [String: Any] = [:]
var dic2 = [String: Any]()

 


Set

- 값을 담는 자료구조인데, 중복된 데이터는 무시되는 자료구조

 

선언

var primes: Set<Int> = [2, 3, 4, 5]
var evens = Set<Int>([2, 3, 4, 5, 5, 2])  // 타입 선언이 되지 않는다면 (소괄호) 안에 [] 값을 넣어서 선언해줍니다.
var emptySet: Set<Int> = []   // 빈 Set 선언 
var emptySet2 = Set<Int>()   // 빈 Set 선언

 


tuple

- 여러 데이터를 하나의 값으로 표현

- 세부 데이터 접근시, 포지션 또는 이름으로 접근 가능

- 소괄호로 묶는데 KEY: VALUE 로 진행, 키의 인덱스를 '.' 을 통해서 접근할 수 있음

 

예시

var phone = (os: "IOS", model: "iPhone 15")
phone.os. // IOS
phone.0. // IOS
phone.1 // iPhone 15
phone.model // iPhone 15

enum

- 서로 관계있는 값들을 모아서 표현한 것

- 특정 타입들을 표시할 때 좋음

- 변수 선언할 때에는 enum 내에 변수 값을 정할 때 반드시 타입선언을 해줘야함 (아래 today: WeekDay, mp3: MediaType처럼)

- enum의 기본 타입(멤버 변수)을 설정할 수 있음 

- 연관값을 가지고 있는 형태로 표현 가능(MediaType -> mp3 선언한 것 처럼)

enum WeekDay {
    case mon
    case tue
    case wed
    case thu
    case fri
}

var today: WeekDay = .mon // 오늘은 월요일

enum MediaType {
    case audio(String)
    case video(String)
}

var mp3: MediaType = .audio("mp3") // audio("mp3")

※  enum 타입 내 멤버변수 타입을 지정하기

- enum을 Int로 선언한 경우m 위의 케이스는 0부터 시작

- enum을 String으로 선언한 경우, case 이름을 따르거나, 새로 지정할 수 있음(case down="down_test")

enum Level: Int {
   case beginner
   case intermediate
   case professional
}

var beginner: Level = .beginner
beginner.rawValue  // 0으로 나옴(순서가 0번째이므로)

var intermediate: Level = .intermediate
intermediate.rawValue // 1로 나옴(순서가 1번째이므로)

let pro = Level(rawValue: 2)  // professional 
// rawValue가 2는 professional이기 때문에 바로 변수를 정의하면 바로 가져올 수 있음
// 현재 rawValue는 최대 2이기 때문에 2가 넘어간 값을 넣게 된다면 nil이 나올 것임

※  문자열로 enum 타입 및 rawValue 접근하는 방법

enum Direction: String {
   case up
   case down = "down_test"
   case left
   case right
}

var dir: Direction = .down
dir.rawValue   // down_test가 출력

var dir2 = Direction(rawValue: "up")
print(dir2!.rawValue)      // up\n 
// 값이 명시되어 있기 때문에 !를 붙였지만, 해당 값이 없을수도 있기 때문에 ?를 붙여서 nil도 표기 가능하도록 합니다.


let direction: Direction = .up

switch direction {
case .up:
    print("UP")  // 출력
case .down:
    print("DOWN")
case .left:
    print("LEFT")
case .right:
    print("RIGHT")
}
반응형

'Swift-IOS' 카테고리의 다른 글

Swift : func (함수)에 대해서  (0) 2023.01.17
문자열 관리  (0) 2023.01.17
반복문  (0) 2023.01.17
옵셔널 변수  (0) 2023.01.17