
TIL 8일 차 - Swift 문법 고급 데이터 타입 (Collection Type)
스위프트의 대표적인 컬렉션 타입엔 Array, Set, Dictionary가 있다.
먼저 Array부터 알아보자
1. Array (배열)
- 동일한 데이터 타입의 여러 개의 값들을 순서대로 저장하는 데이터 타입임
- 대괄호 [ ] 를 이용해 정의함
let array = [1, 2, 3, 4]
array[0] // 값은 1임. 배열은 배열의 이름[인덱스] 형식으로 값에 접근할 수 있음
배열의 타입추론
var array1 = [10, 20, 30] // 타입을 명시하지않아도 배열에 Int값이 지정되어있으므로 컴파일러가 자동으로 Int값으로 추론해 생성해준다.
let emptyArray1 = [] // Error: 배열에 아무런 값도 들어있지않으므로 타입을 추론할 수 없음
let emptyArray2: [String] = [] // 타입을 String이라고 명시해주었기 때문에 빈 배열이어도 오류 발생 안함
let emptyArray3: [String]() // 타입뒤에 빈괄호를 넣어주어도 빈 배열 생성 가능
++) 타입이나 변수 뒤에 . 이 있으면 제공하는 함수나 프로퍼티를 사용할 수 있음
' . 는 ~의 로 번역하면 쉽다.'
- array.first: array의 첫 번째 값
- array.append(10): array의 append 함수를 호출함
- 컬렉션 타입은 조건문, 반복문을 이용해 사용할 수 있는데 반복 횟수를 지정할 때에 .count 프로퍼티를 사용하면 동적으로 읽는 것이 가능하다.
배열의 값 추가 기능
// 배열의 값을 나중에 변경하려면 당연히 var 변수로 만들어야 함.
var array = [10, 20, 30]
// 배열의 마지막에 값 추가하기
// array 함수를 이용하면 됨
array.append(40)
print(array)
// [10, 20, 30, 40] 출력
// 배열의 마지막에 배열을 추가하기
array.append(contentsOf: [41,42,43])
print(array) // [10, 20, 30, 40, 41, 42, 43] 출력
// index를 사용해 원하는 위치에 값 추가하기
// 1. insert 함수를 사용
array.insert(5, at: 0) // 0번째 인덱스에 값 5를 insert함
print(array) // [5, 10, 20, 30, 40, 41, 42, 43] 출력
// 2. [인덱스]에 값 삽입
array[0] = 99 // 0번째 인덱스에 99를 삽입함
print(array) // [99, 10, 20, 30, 40, 41, 42, 43]
// 1과 2의 차이점은 기존위치에 있던 값부터 모두 한칸씩 밀려남, 값이 삭제 됨으로 차이가 있다.
배열의 값 제거하기
// 배열의 값 제거하기
var array = [10, 20, 30, 40, 50]
// Array에서 제공하는 removeLast함수를 하용하면 맨뒤의 원소를 삭제할 수 있음
array.removeLast()
print(array) // 10 20 30 40 출력
// 마찬가지 방법으로 removeFirst 함수를 사용하면 맨 첫번째 원소 삭제 가능
array.removeFirst()
print(array) // 20 30 40 출력
// Array에서 제공하는 remove(at: index) 함수를 사용하면 원하는 인덱스의 값을 제거할 수 있음
array.remove(at: 1)
print(array) // 20 40 출력
// removeAll 함수를 사용하면 모든 원소를 삭제할 수 있음
array.removeAll()
print(array) // [] 빈 배열 출력
배열에서 제공하는 유용한 프로퍼티
// 배열의 원소의 개수를 알려주는 변수
var array = [10, 20, 30, 40, 50]
array.count //5
// 배열이 비어있는지 확인하는 변수
array.isEmpty // false
array.first // Optional(10)
array.last // Optional(50)
// 빈 배열일수도 있으므로 옵셔널이 감싸주고 있음
2. Set (집합)
- 순서가 없음
- 중복 허용 않음
- 저장할 타입을 명시해줘야 함
// 빈 셋 생성범
var emptySet: Set<String> = []
var emptyset2 = Set<String>()
// 생성과 동시에 값 넣기
var defaultSet: Set<String> = ["A", "B", "C"]
// 기본값이 있으면 타입지정안해도 자동으로 지정됨
var typeInferredSet: Set = ["A", "B", "C"]
// Set도 마찬가지로 컬렉션 타입이므로 반복문으로 원소 출력 가능
for value in typeInferredSet {
print(value)
}
// Set은 순서가 없으므로 A->B->C 순서를 보장하지않음
Set에서 제공하는 유용한 변수
var defaultSet: Set<String> = ["A", "B", "C"]
// Set에 몇개의 값이 있는지 확인하는 count 변수
print(defaultSet.count) // 3 출력
// Set에 값이 있는지 확인하는 isEmpty 변수
print(defaultSet.isEmpty) // false 출력
Set에서 제공하는 유용한 함수
var defaultSet: Set<String> = ["A", "B", "C"]
// Set에 특정 값이 들어있는지 유무를 확인하는 contains 함수
defaultSet.contains("A") // true
defaultSet.contains("a") // false
// Set에 값을 추가하는 insert 함수
defaultSet.insert("D")
print(defaultSet) // Set은 순서를 보장하지않으므로 순서는 계속 랜덤으로 출력 됨
// Set은 중복을 허용하지않음
defaultSet.insert("A")
print(defaultSet) // "A"는 여전히 한개임
// Set에서 값을 삭제하는 remove 함수
defaultSet.remove("A")
print(defaultSet) // "B", "C", "D" 출력
// Set에서 모든 값을 삭제하는 removeAll 함수
defaultSet.removeAll()
print(defaultSet) // 빈 셋 출력
3. 딕셔너리 (Dictionary)
- 순서와 상관없이 키(key)와 값(value) 쌍으로 데이터를 저장하는 컬렉션 타입임
- key는 중복을 허용하지 않고 중복된 key에 새로운 값이 할당되면 최신값으로 업데이트됨
- [ ] 대괄호 안에 : 를 기준으로 key와 value로 나누어 사용함
딕셔너리 정의하기
// 빈 딕셔너리 정의
var emptyDictionary: [String: Int] = [:]
// key의 타입은 String이고 Value의 타입은 Int임
var emptyDictionary2 = [Int: String]()
// key의 타입은 Int이고 Value의 타입은 String임
// 기본값이 있는 Dixtionary
var defaultDictionary: [String: String] = ["A": "Apple", "B": "Banana"]
// 자동으로 타입 할당하기
var defaultDictionary2 = ["A": "Apple", "B": "Banana"]
// 컴파일러가 Key, Value의 타입을 추론하여 [String: String]으로 할당해줌
딕셔너리 사용하기
// Key의 값에 접근하려면 [ ]의 안에 Key를 넣으면 됨
var defaultDictionary = ["A": "Apple", "B": "Banana"]
print(defaultDictionary["A"])
// Optional("Apple") 출력
defaultDictionary["C"] = "Cherry"
// "C" Key값에 "Cherry"값이 추가로 할당 됨
defaultDictionary["A"] = "Avocado"
print(defaultDictionary["A"]) // "Avocado" 출력 됨
딕셔너리에서 이용하는 유용한 변수
var defaultDictionary = ["A": "Apple", "B": "Banana"]
// 딕셔너리에 저장되어있는 값의 개수를 확인하는 count 변수
print(defaultDictionay.count) // 2
// 딕셔너리가 비어있는지 확인하는 isEmpty 변수
print(defaultDictionary.isEmpty) // false
// 딕셔너리에 저장되어있는 키값들을 확인 하는 keys 변수
print(defaultDictionary.keys) // "A" "B" 출력 됨 딕셔너리는 순서를 보장하지않기때문에 순서는 랜덤으로 바뀜
// 딕셔너리에 저장되어있는 Value 값들을 확인하는 values 변수
print(defaultDictionary.values) // "Apple" "Banana" 역시 값들의 순서를 보장하지 않고 출력 됨
'iOS > Swift ' 카테고리의 다른 글
| [iOS-Swift] 인스턴스 (0) | 2026.01.07 |
|---|---|
| [iOS-Swift] 고차함수 (0) | 2026.01.07 |
| [iOS-Swift] 함수 (0) | 2026.01.06 |
| [iOS-Swift] 조건문 (0) | 2026.01.06 |
| [iOS-Swift] 기본 데이터 타입 (0) | 2026.01.06 |