맛동산이

스위프트 스터디 7탄) 열거형(Enumerations) 본문

앱/Swift 문법

스위프트 스터디 7탄) 열거형(Enumerations)

진ddang 2023. 7. 8. 16:15

 

스위프트 공식문서를 참조하였습니다.



열거형 문법

import UIKit  enum Compass {     case North, South, East, West }  var direction : Compass = .South  switch direction { case .East:     print("east") case .West:     print("west") case .South:     print("South") case .North:     print("North") } print(type(of: direction))

그냥 이런식으로 사용가능하다고 생각하자.

 

메소드에서도 사용가능

import UIKit  enum Compass {     case North, South, East, West     func printDirection(){         switch self{         case .North, .South:             print("남북")         case .East, .West:             print("동서")         }     } } Compass.South.printDirection() // south

 

열거형의 rawValue

위의경우에는 그냥 String으로 받앗지만 int형 등 다양한 자료형을 사용할수도 있다.

enum Numbers: Int{ 	case red = 1 	case green = 2 	case blue = 3 } print(Numbers.red) // 1 print(Numbers.green) //2 print(Numbers.blue.rawValue) // 3

그런데 이거를 입력을 안해주더라도 rawValue를 주게 된다. Int형이라면 01234 순으로 String이면 case이름과 동일하게 값이 주어진다.

 

 

enum의 사용 하는 방향에 대해서

위의 글에서는 단순히 이넘은 타입을 나눠준다고 생각을 했지만, 사실 이넘은 다양하게 사용하게 된다.

특히나 어떠한 케이스를 나누거나, static한 값을 하드 코딩할때 많이 사용하게 되는데;

class Model{ 	 	enum School { 		case t1, t2, t3, t3 		 		var title: String{ 			case .t1: return "티원" 			case .t2: return "티투" 			case .t3: return "티쓰리" 			case .t3: return "티포" 		} 	} 	var words : School 	init(_ words: School){ 		self.words = .words 	}  }

와 같은 방법으로 이넘을 작성했을때

class Model{ 	words : String 	init(_ words: String){ 		self.words = words 	} } //일때  let models: [Model] = [ 	Model("티원"), 	Model("티투"), 	Model("티쓰리"), ]  //와 같은 하드코딩을 이넘을 통해 다음과 같이 해소할수 있게 된다.  let models: [Model.School] = Model.School.allcase // models = [t1, t2, t3, t4] let models: [Model] = [ 	Model(.t1), 	Model(.t2), 	Model(.t3), ] //로 처리하게 된다.

Uploaded by

N2T
반응형