1 Collection?
- 여러 변수를 담을 수 있는 컨테이너
- Array, Dictionary, Set등이 있다.
2 Array
- 동일한 타입의 여러 변수를 저장할 수 있는 컨테이너
- 정의
var evenNumbers: [Int] = [2, 4, 6, 8]
var oddNumbers: Array<Int> = [1, 3, 5, 7]
- append
evenNumbers.append(10)
evenNumbers.append(contentsOf: [12, 14])
oddNumbers += [9, 11, 13]
- empty check
let isEmpty = evenNumbers.isEmpty
- count
let numOfElems = evenNumbers.count
- 원소 접근 first, last, min, max
evenNumbers.first
oddNumbers.last
evenNumbers[3]
evenNumbers[100]
- evenNumbers[100]에서 인덱스 범위를 벗어나면 에러가 난다.
let emptyArray: [Int] = []
emptyArray.first
// compare
evenNumbers.min()
evenNumbers.max()
- first, last를 했는데 배열이 비어있을 수 있다. 따라서 반환형은 optional이고 적절한 상황에서 옵셔널 바인딩이 필요하다.
- min, max는 elements간의 비교연산이 가능한 경우 최소 최대 값을 반환해 준다. 마찬가지로 최소, 최대값이 없을 수 있는 경우를 대비해 타입은 optional이다.
- range
var evenNumbers: [Int] = [2, 4, 6, 8]
let threeEvenNumsFromStart = evenNumbers[0...2]
evenNumbers[0] = -2
evenNumbers[0...2] = [10, 12, 14]
evenNumbers
- drop
var evenNumbers: [Int] = [2, 4, 6, 8]
evenNumbers.dropFirst(2)
evenNumbers
- dropfirst는 배열의 시작점으로부터 n개의 원소를 뺀 나머지를 배열로 반환하는 함수이다.
- 원본 배열에서 원소를 삭제하는 것이 아니라 뺀 나머지를 가져오는 것이다.
- 같은 방식으로 dropLast를 사용할 수 도 있다.
- prefix, suffix
- drop과는 반대로 앞의 n번째 원소를 배열로 반환하거나 뒤의 n원소를 반환하는 방법도 있다.
- 마찬가지로 원본 배열에 변화를 일으키지 않는다.
var evenNumbers: [Int] = [2, 4, 6, 8]
evenNumbers.prefix(2)
evenNumbers
evenNumbers.suffix(2)
evenNumbers
- contains
evenNumbers.contains(3)
- 특정 index에 삽입/제거
evenNumbers.insert(40, at: 3)
evenNumbers.remove(at: 0)
- swapAt
evenNumbers.swapAt(0, 3)
- iterate
var evenNumbers: [Int] = [2, 4, 6, 8]
for num in evenNumbers {
print(num)
}
for (index, num) in evenNumbers.enumerated() {
print("idx: \(index) value: \(num)")
}
- enumerated()를 사용하면 배열의 value뿐 아니라 Index도 가져올 수 있다.
3. Dictionary
- 유니크한 key와 value의 짝을 여려개 저장할 수 있는 컨테이너
- 순서가 따로 없음
- 정의
var score: [String: Int] = ["A": 90, "B": 70, "C": 30]
var score2: Dictionary<String, Int> = ["A": 90, "B": 70, "C": 30]
- isEmpty, count
score.isEmpty
score.count
- value 접근/삽입/제거
score["A"]
score["D"]
- key가 없는 경우 nil이 나온다. 따라서 적절한 상황에서 옵셔널 바인딩이 필요할 수 있다.
score["A"] = 100
score["D"] = 30
score["D"] = nil
score
- 새로운 key에 value를 초기화 해주면 dictionary에 추가된다.
- 해당 key의 value를 nil로 초기화 하면 dictionary에서 사라진다.
for (name, score) in score {
print("\(name) \(score)")
}
for (key) in score.keys {
print(key)
}
- 이렇게 for loop를 통해 dictionary의 원소들을 접근할 수 있다.
4. Set
- 순서가 없고 겹치는 값이 없는 컨테이너, 모든 elements들은 유니크하다.
var someSet: Set<Int> = [1, 2, 3, 1]
someSet.isEmpty
someSet.count
someSet.contains(1)
someSet.insert(5)
someSet.remove(2)
'ComputerScience > ios App(Storyboard)' 카테고리의 다른 글
ios - 10 swift 기본문법(Structure) (0) | 2021.07.22 |
---|---|
ios - 9 swift 기본문법 (Closure) (0) | 2021.07.21 |
ios - 7 swift 기본문법(Function, Optional) (0) | 2021.07.15 |
ios - 6 swift 기본문법(Tuple, Flow Control) (0) | 2021.01.28 |
ios - 5 Auto Layout, 앱 아이콘, 이름 설정 (0) | 2021.01.28 |