[Swift 문법] 2 - 2. 컬렉션 자료형

JJOOEE__·2024년 6월 11일
0

Swift 문법

목록 보기
5/13
post-thumbnail

🍏 2. 컬렉션 자료형 (Collection Types)

◻️ 1) 배열 (Array)

🍀 ① 배열이란?

  • 배열(array)은 단일 값으로 저장되는 값의 모음
  • 배열은 순서가 있는 동일한 타입의 값을 저장하는 자료구조

Swift에선 총 두 개의 배열이 존재함!!
Swift에서 제공하는 Array라는 것과 나머지 하나는 Foundation에서 제공하는 NSArray라는 것임!! (Objective-C 문법)

이 둘의 차이점은 다음과 같음 :)

ArrayNSArray
타입구조체 타입클래스 타입
저장 위치스택(Stack)스택(Stack)
요소(Element) 자료형모두 동일한 자료형만 저장 가능
(Int형 배열은 Int형만 저장 가능,
String형 배열은 String형만 저장 가능)
인스턴스라면 타입 상관 없이 저장 가능
(Int, Double 같은 구조체 타입은 저장 불가,
NSNumber 같은 인스턴스로는 저장 가능.
인스턴스기만 한다면 NSString,NSNumber등
타입에 상관 없이 하나의 배열에 모두 저장 가능)
COW(Copy-on-write)OX

오늘은 배열에 대해 전반적인 내용을 알아보고 우리가 자주 사용하는것은 array기 때문에! array에 관련된 메서드들도 함께 알아볼 것임!!

🍀② 배열 생성하기

  • 배열 타입을 선언해줄 방법은 다양합니다.
    • let키워드 : 상수로 선언하면 변경할 수 없는 배열
    • var키워드 : 변수로 선언해주면 변경 가능한 배열
    • Array키워드 : 타입 이름의 조합으로 사용
      (대괄호로 값을 묶어 Array 타입임을 표현)
    • 빈 배열 : 이니셜라이저 또는 리터럴 문법을 통해 생성
      (isEmpty 프로퍼티로 비어있는 배열인지 아닌지 확인)
      등등

아래 예시와 함께 더 자세히 살펴 보자

🌈 1. 타입 추론으로 배열 생성하기

// let 키워드를 사용한 상수 배열
let fruits = ["apple", "banana", "cherry"]
// fruits.append("date")  
// Error: Cannot use mutating member on immutable value: 'fruits' is a 'let' constant

print(fruits)

// var 키워드를 사용한 변수 배열
var numbers = [1, 2, 3, 4]
numbers.append(5)

print(numbers)

🌈 2. 타입 Annotation으로 배열생성하기

var array3: [Int] = [1, 2, 3]
var array4: [Int] = []       //빈 배열 생성

🌈 3. 생성자를 사용하여 배열 생성하기

  • Swift에서 배열을 생성할 때 사용할 수 있는 생성자
    • 빈 배열
    • 초기값을 가진 배열
    • 배열 리터럴
    • 다양한 타입을 가진 배열 ...
//빈 배열
var emptyArray1 = [Int]()
var emptyArray2 = Array<String>()
  
//초기값을 가진 배열
var arrayWithInitialValues = [1, 2, 3, 4, 5]

 //배열 리터럴
var colors = ["red", "green", "blue"]
var numbers = Array(repeating: 0, count: 10)
  
//다양한 타입을 가진 배열
var mixedArray: [Any] = [1, "two", 3.0, true] 

print(emptyArray1)           // []
print(emptyArray2)           // []
print(arrayWithInitialValues)  // [1, 2, 3, 4, 5]
print(colors)                // ["red", "green", "blue"]
print(numbers)               // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print(mixedArray)            // [1, "two", 3.0, true]

🍀③ Swift에 배열이 있는 이유는??

  • 단일 값이 아닌 많은 값을 저장하기 위해 사용함
  • 다른 유형의 데이터 처럼 배열의 상수(let)와 변수(var)를 만들 수 있지만 차이점은 배열은 그 안에 많은 값을 보유 할 수 있음
  • 배열은 가변적이면서 자유롭게 추가하거나 제거하며 재정렬이가능함
  • 0부터 카운트 하는 숫자를 사용하여 배열의 값을 읽음.
    !주의! 잘못된 인덱스를 사용하여 배열을 읽을 경우 프로그램 충돌이 일어남

🍀④ 배열 메서드

👆 클릭하여 링크로 이동하여 자세히 확인 가능

여러가지 메서드와 프로퍼티를 공부하고 익힐 때마다 하나씩 추가하는 중

◻️ 2) 사전 (Dictionary)

사전은 키-값(key-value) 쌍으로 구성된 컬렉션 자료형입니다.

var person: [String: Any] = 
     ["name": "John", "age": 30, "isStudent": true]

◻️ 3) 집합 (Set)

집합은 순서 없이 유일한 값을 저장하는 자료구조입니다.

var uniqueNumbers: Set<Int> = [1, 2, 3, 4, 5]
profile
개발이 어려운 나를 위한... 개발노트

0개의 댓글