-
웹개발자의 iOS 개발기(3) - 열거형, 스위치iOS 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문.
'iOS' 카테고리의 다른 글
웹개발자의 iOS 개발기(6) - [SwiftUI] 리스트 (0) 2025.01.25 웹개발자의 iOS 개발기(5) - 예외 처리, 프로토콜, 제네릭 (0) 2025.01.24 웹개발자의 iOS 개발기(4) - 옵셔널, 옵셔널 바인딩, 체이닝 (0) 2025.01.19 웹개발자의 iOS 개발기(2) - struct(구조체), class, @State, @ObservableObject (0) 2025.01.19 웹개발자의 iOS 개발기(1) - Swift 기초 문법 (0) 2025.01.19