콜렉션 타입 (Collection Types)
Swift 에서는 콜렉션 타입으로 배열, 셋, 사전 세 가지를 지원합니다.
배열 (Array)
배열 타입은 Array로 기재할 수 있으며 축약형으로 `[Element]` 형태로 사용할 수 있습니다.
빈 배열의 생성
아래와 같이 Int
배열 타입의 빈 배열을 생성할 수 있습니다.
var intArray = [Int]()
intArray.append(3)
// 배열에 3을 추가하였습니다.
intArray = []
// 배열을 재초기화 하였습니다. 배열의 아이템 타입은 그대로 Int로 유지됩니다.
기본 값으로 빈 배열 생성
repeating 메소드와 count 메소드를 이용하여 기본 값으로 빈 배열을 생성할 수 있습니다.
var threeDoubels = Array(repeating: 0.0, count: 3)
// threeDoubles: [0.0, 0.0, 0.0]
다른 배열을 추가한 배열의 생성
덧셈 연산자(+) 를 통해 배열을 합칠 수 있습니다.
var anotherThreeDoubles = Array(repeating: 9.9, repeating: 3)
// anotherThreeDoubles: [9.9, 9.9, 9.9]
var sixDoubles = threeDoubles + anotherThreeDoubles
// sixDoubles: [0.0, 0.0, 0.0, 9.9, 9.9, 9.9]
배열의 접근 및 변환
배열의 원소 갯수 확인
var shoppingList = ["Eggs", "Milk"]
print("The shopping list contains \(shoppingList.count) items.")
// The shopping list contains 2 items.
배열이 비었는지 확인
if shoppingList.isEmpty {
print("The shopping list is empty.")
} else {
print("The shopping list is not empty")
}
배열에 원소 추가
shoppingList += append("Four")
// shoppingList.count = 3
shoppingList += ["Baking Powder"]
// shoppingList.count = 4
shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
// shoppingList.count = 7
배열의 특정 위치의 원소 접근
var firstItem = shoppingList[0]
// firstItem: "Eggs"
특정 위치에 원소 추가/삭제/접근
shoppingList.insert("Maple Syrup", at: 0)
let mapleSyrup = shoppingList.remove(at: 0)
firstItem = shoppingList[0]
// firstItem: "Six Eggs"
let butter = shoppingList.removeLast()
셋 (Set)
Set
형태로 저장되기 위해서는 반드시 타입이 Hashable
이어야만 합니다.
Swift에서 String
, Int
, Double
, Bool
, 과 같은 기본 타입은 기본적으로 Hashable
프로토콜을 준수합니다.
Hashable
프로토콜은 정수 Hash 값을 제공하는 타입을 의미합니다.
이는 즉, 그 자체로 유일하게 표현이 가능한 방법을 제공해야 한다는 의미를 갖습니다.
Swift에서 Set
타입은 Set
을 통해 선언합니다.
빈 Set 생성
var letters = Set<Character>()
print("letters is of type Set<Character> with \(letters.count) items.")
// letters is of type Set<Character> with 0 items.
letters.insert("a")
letters = []
배열 리터럴을 이용한 Set 생성
var favoriteGenres: Set<String> = ["Rock", "Classical", "HipHop"]
Swift의 타입 추론으로 아래와 같이 선언도 가능합니다.
var favoriteGenres: Set = ["Rock", "Classical", "HipHop"]
Set의 접근과 변경
print("I have \(favoriteGenres.count) favorite music genres.")
// I have 3 favorite music genres.
원소 추가
favoriteGenres.insert("Jazz")
원소 삭제
if let removedGenre = favoriteGenres.remove("Rock") {
print("\(removedGenre)? I'm over it.")
} else {
print("I never much cared for that.")
}
// Rock? I'm over it.
값 확인
if favoriteGenres.contains("Funk") {
print("I get up on the good foot.")
} else {
print("It's too funky in here.")
}
// It's too funky in here.
Set의 명령
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sorted()
// union: 합집합 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// intersection: 교집합 = []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// subtracting: 차집합 = [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// symmerticDifference: 대칭차집합 = [1, 2, 9]
사전 (Dictionaries)
Swift의 String 타입이 Foundation
클래스의 NSString
을 브릿지한 타입이라고 공부하였습니다.
Swift의 Dictioanry 또한 마찬가지로 Foundation
클래스의 NSDictionary
를 브릿지한 타입이므로 NSDictionary
의 메소드를 캐스팅 없이 사용할 수 있습니다.
축약형 Dictionary
[Key: Value] 형태로 Dictionary를 선언하여 사용할 수 있습니다.
빈 Dictioanry 생성
var namesOfIntegers = [Int: String]()
namesOfIntegers[16] = "sixteen"
namesOfIntegers = [:]
// 빈 사전
리터럴을 이용한 Dictionary 생성 및 값 변경
[key 1: value 1, key 2: valeu2, key 3: value3]
과 같은 형태로 사전을 선언할 수 있습니다.
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
airportsp["LHR"] = "London"
'iOS' 카테고리의 다른 글
[iOS] [Swift] Arrays (0) | 2021.07.05 |
---|---|
[iOS] [Swift] The Swift Programming Guide - 4.제어문 (Control Flow) (0) | 2021.06.28 |
[iOS] [Swift] The Swift Language Guide - 2. 문자열과 문자(String and Characters) (0) | 2021.06.22 |
[iOS] [Swift] The Swift Language Guide - 1. 기본 연산자 (Basic Operators) (0) | 2021.06.22 |
[iOS] [Swift] Enumerations (0) | 2021.06.05 |