iOS

웹개발자의 iOS 개발기(3) - 열거형, 스위치

whh__ 2025. 1. 19. 13:38

열거형, 열거형을 이용한 스위치문에 대하여 공부해 보았습니다.

04. 열거형 - 필요한 선택지를 만드는 방법

import SwiftUI

struct _4_Enum_Choice_: View {
    
    var direction: Direction = .north
    var member: Member = .A
    var menu: Menu = .steak("레어")
    
    var body: some View {
        Text("방향은 \\(direction.rawValue)쪽입니다")
    }
}

enum Direction: String {
    case north = "북"
    case west = "서"
    case east = "동"
    case south = "남"
}

enum Member: String {
    // 아래와 같이 한줄로 선언 가능
    //case A = "Alex", B = "Boo", C = "Cool", D = "Deny"
    
    case A = "Alex"
    case B = "Boo"
    case C = "Cool"
    case D = "Deny"
}

enum Menu {
    case pasta
    case pizza
    case steak(String)
}

#Preview {
    _4_Enum_Choice_()
}

05. 스위치 - 선택지를 사용해서, 케이스 별로 정리하는 방법

import SwiftUI

struct _5_Switch_Selection_: View {
    
    @State var myDirection: Compass = .north
    
    var body: some View {
        
        VStack {
            switch myDirection {
            case .north:
                Text("북쪽은 추워요")
            case .west:
                Text("서쪽은 석양이 예뻐요")
            case .east:
                Text("동쪽으로 해 보러 갈래요?")
            case .south:
                Text("남쪽으로 쉬러가요!")
            default:
                Text("에러입니다")
            }
        }
        
        Button {
            switch myDirection {
            case .north:
                myDirection = .east
            case .west:
                myDirection = .north
            case .east:
                myDirection = .south
            case .south:
                myDirection = .west
            default:
                myDirection = .north
            }
        } label: {
            Text("돌리기")
        }

        Button {
            switch myDirection {
            case .north, .west:     // 하나의 case에 2가지 타입 가능
                myDirection = .east
            default:                // default: 위의 case가 모두 아닐 때
                myDirection = .north
            }
        } label: {
            Text("돌리기")
        }
        
        
        
    }
}

enum Compass: String {
    case north = "북"
    case west = "서"
    case east = "동"
    case south = "남"
    case myWay
}

#Preview {
    _5_Switch_Selection_()
}

 

개발자는 if문과 switch문 중 선택해야 하는 상황이 생길 것이다.

선택 시 고려사항

  • 가독성: 조건의 수가 많아질수록 switch문이 더 가독성이 높아진다.
  • 안전성: switch는 모든 가능한 케이스를 처리하도록 강제하므로, 열거형이나 특정 값의 집합에 대해 안정성을 제공한다.
  • 퍼포먼스: 컴파일러 최적화 측면에서, 간단한 조건일 때는 차이가 없으나, 값 기반의 다중 분기에서는 switch문이 더 효율적일 수 있다.

결론

  • 조건의 수가 적고 복잡한 논리가 필요한 경우 → if문.
  • 값이나 패턴에 따른 다중 분기 처리가 필요할 경우 → switch문.