본문 바로가기
iOS/Swift

[iOS/Swift] Collection Type (Array)

by iosdevlime 2022. 11. 5.

 

Swift는 다양한 초기값을 저장하고, 활용하기 위한

Box 형태인 컬렉션 타입 (Collection Type) 기능을 제공합니다.

 

 

이번, 그리고 다음 포스팅을 통해 해당 개념에 대해 구체적으로 살펴보고자 합니다.

 

 


 

 

Collection Type 이란?

동일한, 혹은 지정된 유형(Type)을 가지고 있는 데이터의 집합

 

 

왜 필요한가요?

  • 각각의 데이터를 개별적으로 선언할 필요가 없어 편리합니다.
  • 또한, 유사한 특징을 가지고 있는 데이터를 관리하기에 효율적입니다.

지난 포스팅 글에서 다룬 예시에서, 일반적인 선언문의 형태를 살펴보면?

// 1. 초기화 값이 할당된 상태로 선언된 경우
var name: String = "Lime"

// 2. 초기화 값이 없이 선언된 경우 
let age: Int

 

 

1개의 초기화(혹은 비어있는) 값을 선언하는 형태를 띄고 있었습니다.

 

하지만, 컬렉션 타입 (Collection Type)을 활용한다면?

2개 이상의 초기화된 값도 담아 낼 수 있습니다. 

 

 

 

주요특징

  • '지정된 유형'이란?
    • Swift에서의 Collection Type은 '지정된 유형'의 데이터들의 집합입니다.
    • '지정된 유형'이란, 한가지의 데이터 유형만을 담을 수 있다는 의미입니다.

  • 데이터 값 변경
    • '변수(var)'에 할당할 경우 내부에 있는 값들의 변경이 가능합니다!
    • 반대로 '상수(let)' 형태로 선언하게 될 경우 불가능합니다.

 

 

 

유형의 종류

  • Array, Dictionary, Set
    • Collection Type은 크게 3가지 유형으로 구분할 수 있습니다.
      • 📄 Array : 순서가 있는 리스트 형식의 타입 (List)
      • 📒 Dictionary : Key와 Value가 쌍으로 이루어진 타입 (Couple)
      • 🗄 Set : 순서가 없는 그룹 형식의 타입 (Group)

 

Apple Swift 공식문서에서 제공하는 컬렉션타입 소개
Apple Swift 공식문서에서 제공하는 컬렉션타입 소개 (출처 : Apple, 'the swift programming language')

Collection Type : The swift programming language swift 5.7

 

Collection Types — The Swift Programming Language (Swift 5.7)

Collection Types Swift provides three primary collection types, known as arrays, sets, and dictionaries, for storing collections of values. Arrays are ordered collections of values. Sets are unordered collections of unique values. Dictionaries are unordere

docs.swift.org

 

 

 


 

 

 

Array (배열)

동일한 타입(Int, String 등)의 값을 '순서'대로 저장하는 List 형태의 유형

 

 

정의

  • Array? 배열?
    • 순서(Index)에 따른 값(Value)을 가진 List 형태의 유형입니다.
    • 따라서 중복된 값을 보유할 수 있습니다!

 

 

 

생성과정

  • 기본형태
    • 기존 변수&상수 선언문 타입 자리에 👉🏻 Array <Type> 을 작성합니다.
    • 여기서 < > 내부의 Type은 기본적으로 Basic Type(Int, String ..)을 의미합니다.
// Int 타입의 array 선언
var someIntArray: Array<Int>

// String 타입의 array 선언
var someStrArray: Array<String>

 

  • 단축형태
    • 기본형태 Array <Type>을 👉🏻 [ Type ] 으로 변경합니다.
// Int 타입의 array 단축 선언
var someIntArray: [Int]

// String 타입의 array 단축 선언
var someStrArray: [String]

 

 

  • 비어있는 배열(Array)
    • 3가지 형태로 생성할 수 있습니다.
    • 비어있는 배열의 경우, 반드시 Type을 명시해야 합니다!
// 일반형태
var emptyArr1: Array <Int> = [ ]  
  
// 단축형태 1
let emptyArr2: [String] = [ ]   
  
// 단축형태 2
let emptyArr3 = [Int]()  // 새로운 형태

 

 

 

활용방법 및 예시

  • 타입추론(Type Inferece)
    • 타입이 명시되지 않았으나, 동일한 타입의 값이 포함될 경우 적용됩니다.
    • 비어있는 배열의 경우는 적용되지 않습니다! (반드시 타입명시가 필요합니다)
// 동일한 타입의 초기값을 나열한다고 가정할 때,

// Int 타입 추론
var someArr1 = [1,2,3,4,5,6] 


// String 타입 추론
var someArr2 = ["LIME", "JASON", "KATE"]

 

 

  • 요소 값 할당(초기화)
    • 빈 배열의 경우, 임의의 값을 넣기 위해 .append() 메서드를 활용합니다.
      • 메서드는, 일종의 '기능'이라고 이해하고 넘어가시길 바랍니다.
// .append() 메서드를 활용한 값 넣기
var arrValue: Array<Int> = [ ]  // 빈 배열 만들기

⬇︎
arrValue.append(3) // 배열 내 '3' 추가
arrValue.append(5) // 배열 내 '5' 추가
arrValue // [3, 5]

 

  • 요소 값 할당 (직접 입력 및 범위 연산자 활용) 
    • 또한 사용자가 직접 값을 입력 하거나, 범위 연산자 를 활용할 수 있습니다.
// 사용자가 직접 입력하기 1 (일반, 단축형태) 
var arrValue2: Array<Int> = [1,3,5,7] // [1,3,5,7]
var arrValue3: [Int] = [12, 24, 36, 48] // [12,24,36,48]
  
  
// 사용자가 직접 입력하기 2 (타입추론)
var arrValue4 = ["Joker", "Betman", "Robin"]
 
 
// 범위 연산자 활용하기 ('...' 연산자는 a...b까지 모든 수를 포함)
var arrValue5 = Array(1...4) // [1,2,3,4]

 

  • 요소 값 삭제 
    • 만약 배열의 값을 전부 없애고 싶다면, 빈 대괄호[ ]를 선언(할당)합니다.
// 배열 요소 초기화 하기
var favorFruits = ["Banana", "Apple", "WaterMelon"]
  
⬇︎ 빈 대괄호 [ ] 선언
favorFruits = [ ]
favorFruits // [  ]  empty!

 

 

  • Index 접근
    • 배열의 내부 요소의 값을 접근하기 위해, Index를 활용합니다.
    • C언어와 동일하게 '0 based' index로 접근합니다.
      • 즉, 배열의 첫번째 요소는 [0]부터 시작됩니다.
// Index를 활용하여 요소값 확인하기
var color = ["Red", "Green", "Blue"]
color[0] // ["Red"]
color[2] // ["Blue"]
  
⬇︎ '범위 연산자'를 활용한다면?
  
color[0...1] // ["Red", "Green"]

 

 

 

 

 

 

댓글