Swift의 컬렉션
- 데이터를 효율적으로 관리하기 위한 자료형
- Array, Dictionary, Set이 있음
- Array vs Set -> 주로 Array를 사용함. 단, 여러 데이터를 중복 저장할 필요가 없을 때 Array 대신 Set을 사용하기도 함
- Swift 5.2에서 KeyValuePairs가 추가됨
- Dictionary와 유사한 형태이지만, 배열처럼 순서가 있는 컬렉션
컬렉션 관련 용어
- Copy-On-Write 최적화 : 코드상에서 값을 복사해서 담는다 하더라도, 실제 값이 바뀌기 전까지는 하나의 메모리 값을 공유해서 사용하는 것 (메모리를 적게 차지하기 위해 Swift 내부에서 알아서 처리하는 매커니즘)
Array
// Swift 배열 표기 방법
// 정식 표기 방법
let numArray: Array<String> = [1, 2, 3]
// 단축 문법
let numArray: [String] = [1, 2, 3]
- 순서대로 저장하는 컬렉션
- Swift의 배열에는 동일한 타입의 데이터만을 담을 수 있음
Swift 빈 배열 생성
var emptyArray0: [Int] = []
var emptyArray1 = Array<Int>()
var emptyArray2 = [Int]()
배열 기본 기능
Swift | Javascript | |
배열 카운트 | array.count | array.length |
빈배열 확인 | array.isEmpty | 별도로 존재하지 않음, 카운트 활용 arr.length === 0 !arr.length |
요소 포함 여부 확인 | array.contains(1) | array.includes(1) |
랜덤한 요소 추출 | array.randomElement() | 별도로 존재하지 않음, Math 활용 items[Math.floor(Math.random()*items.length)] |
요소 변경 | array.swapAt(1, 2) | 별도로 존재하지 않음, 구조분해할당 활용 [arr[1], arr[2]] = [arr[2], arr[1]] |
특정 순서 배열 요소 추출 | // 옵셔널 타입, 빈 배열이면 nil return array.first array.last |
별도로 존재하지 않음, 카운트 활용 |
index 추출 | array.startIndex array.endIndex // 배열 메모리의 끝 주소 array.firstIndex array.lastIndex |
array.lastIndexOf(1) |
요소 삽입 | array.insert(3, at: 0) array.insert(contentsOf: [3, 4], at: 0) array += [3] array.append(4) array.append(contentsOf: [3, 4]) |
array.unshift() array.push() |
요소 교체 | array.replace[0] = 9 array.replace[0...2] = [0, 1, 2] array.replace[0...2] = [] array.replaceSubrange(0...1, with: [0,1]) |
|
요소 삭제 | array[0...1] = [] array.remove(at: 1) array.removeSubrange(0...1) array.removeFirst() array.removeFirst(2) // 앞에서부터 2개 array.removeLast() array.removeAll() array.removeAll(keepingCapacity: true) |
array.shift() array.pop() array.slice() |
배열 정렬 | array.sort() array.sorted() // 정렬된 배열 리턴 array.reverse() array.reversed() array.shuffle() array.shuffled() |
array.sort() array.toSorted() array.reverse() array.toReversed() |
등등.. |
- swift는 배열 비교 가능하나, 자바스크립트는 참조값이 비교되어 배열 비교 불가함
Swift emumerated
- 열거된 것들을 Named Tuple 형태로 반환
let array = ["a", "b"]
for tuple in array.enumerated() {
print(tuple) // (offset: 0, element: "a") (offset: 1, element: "b")
print("\(tuple.0) - \(tuple.1)")
}
for (idx, word) in array.enumerated() {
print(idx) // 0 1
print(word) // a b
}
배열 관련 용어
- 서브스크립트 문법: []를 이용한 문법 -> 배열 특정 인덱스 접근 시 배열[]에서 []를 의미
728x90
'FRONT-END > iOS' 카테고리의 다른 글
Javascript와 비교하며 Swift 공부하기 - Set편 (0) | 2023.07.08 |
---|---|
자바스크립트와 비교하며 Swift 공부하기 - Dictionary편 (0) | 2023.07.08 |
자바스크립트와 비교하며 Swift 공부하기 - 옵셔널, 옵셔널 체이닝편 (0) | 2023.07.07 |
자바스크립트와 비교하며 Swift 공부하기 - 함수편 (0) | 2023.07.07 |
자바스크립트와 비교하며 Swift 공부하기 - 어트리뷰트 키워드편 (0) | 2023.07.07 |
댓글