스위프트는 컬렉션 타입을 통해 수 많은 데이터를 묶어 관리
컬렉션 타입에는 배열(Array), 딕셔너리(Dictionary), 세트(Set) 있음
배열
같은 타입의 데이터를 순서대로 저장
중복 저장 가능
배열 선언과 생성
// 배열 선언 방법
var fruitList: Array<String> = ["Apple", "Banana", "Melon"]
var fruits: [String] = ["Apple", "Banana", "Melon"]
배열의 사용
배열은 인덱스를 통해 요소 접근 (인덱스는 0부터 시작)
index(of: ) => 해당 요소의 인덱스 확인
(중복 요소 있을 시, 가장 먼저 발견된 요소의 인덱스 확인)
★ index(of: ) 대신 firstIndex(of: ) 사용 권장 ★
append(_: ) => 배열 맨 뒤에 요소 추가
insert(_: , at: ) => 배열에 원하는 인덱스에 요소 추가
remove(at: ) => 배열에 원하는 인덱스에 요소 삭제
(삭제된 요소는 반환하여 사용할 수 있음)
// 배열 선언 방법
var fruits: [String] = ["Apple", "Banana", "Melon", "Apple"]
// index(of:)
print(fruits.index(of: "Apple")) // 0
print(fruits.firstIndex(of: "Apple")) // 0
// append
fruits.append("Kiwi")
fruits.append(contentsOf: ["Mango", "Strawvery"])
print(fruits)
// ["Apple", "Banana", "Melon", "Apple", "Kiwi", "Mango", "Strawvery"]
// insert(_, at: )
fruits.insert("Kiwi", at: 0)
print(fruits)
// ["Kiwi", "Apple", "Banana", "Melon", "Apple", "Kiwi", "Mango", "Strawvery"]
// remove(at: )
fruits.remove(at:0) // 인덱스 0 번째의 "Kiwi" 삭제
print(fruits)
// ["Apple", "Banana", "Melon", "Apple", "Kiwi", "Mango", "Strawvery"]
// 범위 연산자로 일부 배열만 갖고 올 수 있음
print(fruits[1...3])
// ["Banana", "Melon", "Apple"]
딕셔너리
요소들이 순서 없이 키 - 값 으로 구성된 타입
키를 중복하여 사용 할 수 없음
딕셔너리 선언과 생성
var marketA: Dictionary<String,Int> = Dictionary<String,Int>()
var marketB: [String: Int] = [String: Int]()
// 타입 별칭 사용
typealias marketType = [String: Int]
var marketC: marketType = marketType()
var marketD: [String: Int] = [:]
var marketE: [String: Int] = ["Apple": 1000, "Banana": 2300, "Kiwi": 3200]
print(marketE)
// ["Apple": 1000, "Banana": 2300, "Kiwi": 3200]
딕셔너리의 사용
removeValue(forKey: ) 메서드를 사용하여 키에 해당하는 값을 제거한 후 반환
var marketE: [String: Int] = ["Apple": 1000, "Banana": 2300, "Kiwi": 3200]
print(marketE)
// ["Apple": 1000, "Banana": 2300, "Kiwi": 3200]
print(marketE["Apple"]) // 1000
marketE["Apple"] = 2000
print(marketE["Apple"]) // 2000
marketE.removeValue(forKey: "Kiwi")
print(marketE)
// ["Banana": 2300, "Apple": 2000]
marketE["Kiwi"] = 3000
print(marketE)
// ["Banana": 2300, "Kiwi": 3000, "Apple": 2000]
세트
같은 타입의 데이터를 순서 없이 하나로 묶은 타입
모든 데이터는 중복안됨
순서가 중요하지 않거나 또는 각 요소가 유일할 경우 사용
세트의 선언과 생성
var fruitsA: Set<String> = Set<String>()
var fruitsB: Set<String> = []
var fruitsC: Set<String> = ["Apple", "Mango", "Melon", "Apple"]
print(fruitsC)
// ["Mango", "Apple", "Melon"]
세트의 사용
var fruitsC: Set<String> = ["Apple", "Mango", "Melon", "Apple"]
print(fruitsC)
// ["Mango", "Apple", "Melon"]
fruitsC.insert("Kiwi")
print(fruitsC)
// ["Mango", "Kiwi", "Melon", "Apple"]
fruitsC.remove("Mango")
print(fruitsC)
// ["Kiwi", "Melon", "Apple"]
세트는 내부의 값들에 대해 유일함을 보장하기 떄문에
집합관계를 표현할 때 유용하게 사용
'iOS > Swift' 카테고리의 다른 글
데이터 타입 고급 4편 (열거형 2탄) (1) | 2024.01.08 |
---|---|
데이터 타입 고급 4편 (열거형 1탄) (0) | 2024.01.07 |
데이터 타입 고급 2편 (튜플) (0) | 2024.01.04 |
데이터 타입 고급 1편 (데이터 타입 안심, 타입 별칭) (0) | 2024.01.03 |
데이터 타입 기본 (1) | 2024.01.03 |