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문.