IMCAT.DEV
로그인 가입
Swift 중급 자료구조

Swift 컬렉션 타입 심화

Swift 컬렉션 타입 심화 — 중급

컬렉션 타입 심화

1. 도입 (왜 배워야 하는가)

Swift에서 컬렉션 타입은 데이터를 효율적으로 저장하고 관리하기 위해 필수적인 도구입니다. 배열(Array), 집합(Set), 딕셔너리(Dictionary) 등의 컬렉션은 실무에서 다양한 데이터를 처리할 때 필수적으로 사용됩니다. 예를 들어, 사용자의 정보를 저장하거나 여러 개의 아이템을 관리하는데 컬렉션 타입이 필요합니다. 만약 이 개념을 잘 이해하지 못하면 복잡한 데이터 구조를 다루는 데 어려움을 겪게 되고, 이는 결국 코드의 가독성 및 유지보수성을 떨어뜨리는 결과를 초래할 수 있습니다.

2. 핵심 개념 설명

컬렉션 타입은 주로 다음과 같은 세 가지로 나눌 수 있습니다:

타입설명
Array순서가 있는 데이터의 집합. 배열의 인덱스를 통해 접근.
Set순서가 없고, 중복을 허용하지 않는 데이터 집합.
Dictionary키-값 쌍으로 구성된 데이터 집합. 키를 통해 값에 접근.

비유:

  • 배열은 책의 목록과 같아서 특정 순서로 정리된 데이터를 담고 있습니다.
  • 집합은 독서 클럽에 있는 멤버의 명단처럼 중복된 멤버가 없고, 순서가 중요하지 않습니다.
  • 딕셔너리는 사전처럼 각 단어에 대한 정의(값)를 키를 통해 찾아보는 것입니다.
  • 3. 기본 코드 예제

    여기서는 각각의 컬렉션 타입을 간단하게 사용해보겠습니다.

    배열 예제

    var fruits: [String] = ["사과", "바나나", "오렌지"]
    print(fruits[0]) // "사과"가 출력됩니다.
  • var fruits: [String] : 문자열을 저장할 수 있는 배열을 선언합니다.
  • ["사과", "바나나", "오렌지"] : 배열을 초기화합니다.
  • print(fruits[0]) : 배열의 첫 번째 요소(사과)를 출력합니다.
  • 집합 예제

    var uniqueNumbers: Set<Int> = [1, 2, 3, 2, 1]
    print(uniqueNumbers) // 출력 결과: [2, 1, 3]
  • var uniqueNumbers: Set<Int> : 정수형 집합을 선언합니다.
  • [1, 2, 3, 2, 1] : 중복된 값이 포함된 집합을 초기화합니다.
  • print(uniqueNumbers) : 집합은 중복된 값을 제거하고 출력합니다.
  • 딕셔너리 예제

    var person: [String: String] = ["이름": "홍길동", "나이": "30"]
    print(person["이름"]!) // "홍길동"이 출력됩니다.
  • var person: [String: String] : 문자열 키와 값을 가지는 딕셔너리를 선언합니다.
  • ["이름": "홍길동", "나이": "30"] : 키-값 쌍으로 딕셔너리를 초기화합니다.
  • print(person["이름"]!) : 키를 통해 값을 안전하게 접근합니다.
  • 4. 실전 활용 예제

    쇼핑몰 장바구니 구현

    장바구니에 아이템을 추가하고 관리하기 위해 배열을 사용할 수 있습니다.

    var cart: [String] = []
    
    func addItem(item: String) {
        cart.append(item)
    }
    
    addItem(item: "노트북")
    addItem(item: "스마트폰")
    print(cart) // ["노트북", "스마트폰"]
  • 장바구니에 아이템을 추가하는 함수입니다.
  • 사용자 정보 관리

    사용자 정보를 딕셔너리를 이용해 관리할 수 있습니다.

    var users: [String: Int] = [:]
    
    func addUser(name: String, age: Int) {
        users[name] = age
    }
    
    addUser(name: "김철수", age: 25)
    print(users) // ["김철수": 25]
  • 사용자의 이름과 나이를 딕셔너리에 추가하는 방식입니다.
  • 5. 흔한 실수와 주의사항

    1. 배열에서 인덱스 초과 접근

    잘못된 코드:

    print(fruits[3]) // Index out of range 오류 발생

    올바른 코드:

    print(fruits[2]) // "오렌지"가 출력됩니다.

    2. 중복된 값이 있는 집합 추가

    잘못된 코드:

    uniqueNumbers.insert(2) // 중복된 값이므로 아무 변화 없음

    올바른 코드:

    uniqueNumbers.insert(4) // 성공적으로 추가됨

    3. 딕셔너리에서 존재하지 않는 키 접근

    잘못된 코드:

    print(person["주소"]!) // 런타임 오류 발생

    올바른 코드:

    print(person["주소", default: "정보 없음"]) // "정보 없음" 출력

    6. 정리

  • 컬렉션 타입은 데이터를 효율적으로 저장하고 관리하는 데 필수적입니다.
  • 배열, 집합, 딕셔너리의 각 특성을 이해하고 활용하는 것이 중요합니다.
  • 실무에서는 장바구니, 사용자 정보 관리 등의 상황에서 자주 사용됩니다.
  • 다음에 학습하면 좋은 주제:

  • 고급 컬렉션 타입 활용 (예: 커스텀 객체를 배열 또는 딕셔너리에 저장하기)
  • Swift의 고차 함수(map, filter, reduce) 소개