티스토리 뷰

반응형



첫번째 CaseIterable 프로토콜



>> CaseIterable 프로코콜을 conform 하기 전 ( 따르기전 ) 

 

     모든 메뉴를 담은 리스트를 만들고 싶다면 원소하나씩 넣어줘야한다 



enum Menu:String{

    case scone = "스콘"

    case bagel = "베이글"

    case ciabatta = "치아바타"

}


struct MenuListViewModel {

    let menus:[Menu] = [.scone,.bagel,.ciabatta]

}




>> CaseIterable 프로코콜을 conform 한다면 


     allCases로 enum안에 있는 모든 케이스들을 담은 배열을 얻을 수 있다 


     menus의 타입은 [Menu] 이다 : ) 




enum Menu:String, CaseIterable{

    case scone = "스콘"

    case bagel = "베이글"

    case ciabatta = "치아바타"

}


struct MenuListViewModel {

    let menus = Menu.allCases

}








+ 애플 공식문서에 이렇게 나와있다 







두번째 Extension 


enum관련해서 추가할 프로퍼티 같은 것들이 있다면 extension하여 추가할 수 있다 : ) 



extension Menu{

    var price:Int{

        switch self {

        case .scone:

            return 3000

        case .bagel:

            return 5000

        case .ciabatta:

            return 4000

        }

    }

}




이런식으로 사용할 수 있다 



 MenuListViewModel().menus.first?.price



반응형
댓글