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 |