Swift 에서는 콜렉션 타입으로 Array, Set, Dictionary 세가지를 지원합니다.
Array
빈 배열 생성
var words = [String]()
배열 아이템 동적 추가
① append(_:)
words.append("star")
입력된 값을 배열의 맨 뒤에 추가. 데이터 추가 이전에 배열의 크기를 +1 만큼 확장한 후, 마지막 인덱스 위치에 추가합니다.
② insert(_:at:)
shoppingList.insert("추가할 내용", at: 0)
원하는 위치에 직접 추가하고 싶을 때 사용하는 메서드입니다.
③ append(contentsOf:)
words.append(contentsOf: ["word1", "word2", "word3"])
배열의 마지막에 아이템을 추가하지만, 개별 아이템이 아니라 여러 개의 아이템을 한꺼번에 추가할 때 사용하는 메서드입니다. 메서드의 인자값은 항상 배열이여야 합니다.
④ removeLast()
배열의 마지막 아이템을 삭제하고 싶다면 배열의 count 프로퍼티의 사용을 피하기 위해 removeLast() 메서드를 사용합니다.
기본 값으로 빈 배열 생성하기
repeating 메서드와 count 메서드를 활용합니다.
var threeDoubles = Array(repeating: 0.0, count: 3)
// threeDoubles : Double 타입의 [0.0, 0.0, 0.0]
Set
순서가 중요하지 않거나 하나의 항목만 가져야 할 때
Set 형태로 저장되기 위해서는 반드시 타입이 hashable 이어야 한다.
Swift 에서 String, Int, Double, Bool 과 같은 타입은 기본적으로 hashable 이다.
빈 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", "Hip hop"]
Set 추가, 삭제, 값 확인
var favoriteGenres = Set<String> = ["Rock", "Classical", "Hip hop"]
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()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted()
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
Dictionary
key-value 쌍으로 저장하는 콜렉션 타입으로, key 값은 고유하지만 value 값은 수정이 가능합니다.
Dictionary의 콘텐츠는 기본적으로 순서가 없으며 반복으로 가져올 아이템에 대한 순서를 보장하지 않습니다. 특히 아이템을 딕셔너리에 삽입하는 순서는 아이템이 반복되는 순서를 정의하지 않습니다.
빈 Dictionary 생성
var namesOfIntegers = [Int: String]()
리터럴을 이용한 Dictionary 생성
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
키(key) LHR에 대한 값(value) 할당 및 변경
airports["LHR"] = "London"
Dictionary 배열에서 key-value 값 참조
// key, value 값을 사용하지 않는다면 (_, value), (key, _ ) 처리를 통해 생략한다.
for (key, value) in wordList {
if key == "star" {
print(value)
}
}
Dictionary 배열에서 key, value 값 따로 참조
for airportCode in airports.keys {
print("Airport code: \(airportCode)")
}
// Airport code: LHR
// Airport code: YYZ
for airportName in airports.values {
print("Airport name: \(airportName)")
}
// Airport name: London Heathrow
// Airport name: Toronto Pearson
Dictionary의 key나 values를 Array로 변형
// LHR: London Heathrow
// YYZ: Toronto Pearson
let airportCodes = [String](airports.keys)
// airportCodes is ["LHR", "YYZ"]
let airportNames = [String](airports.values)
// airportNames is ["London Heathrow", "Toronto Pearson"]
' iOS > 문법' 카테고리의 다른 글
조건적 구문 - switch (0) | 2022.11.17 |
---|---|
배열 구조체는 언제 메모리 할당될까? (선언 시 vs 초기화 시) (0) | 2022.09.15 |
guard 와 if , 언제 사용해야 할까? (0) | 2022.09.15 |
문자열과 문자(Strings & Characters) (0) | 2022.09.05 |
기본 연산자(Basic Operators) (0) | 2022.09.05 |