extension CaseIterable where Self: RawRepresentable {
// enum의 전체 값을 배열로 리턴
static var allValues: [RawValue] {
return allCases.map { $0.rawValue }
}
// 선택된 인덱스를 받아서 해당하는 enum 값을 리턴
static func toValue(index: Int) -> Self? {
if let selected = Self.allValues[safe: index] {
return Self(rawValue: selected)
}
return nil
}
}
사용방법
enum CountryGroupCode: String, CaseIterable {
case Major
case Asian
case Europe
case Oceania
case MiddleEast
case America
case Africa
}
/*
- TableView나 CollectionView 등에서 ContryGroupCode와 같은 데이터로 메뉴 구성하고
클릭시 나오는 Index값으로 for문으로 검색해서 찾는 방식이 아니라 index값을 전달하면 해당
데이터가 리턴되게 Extension 추가
*/
if let code = ContryGroupCode.toValue(index: 2) {
print("code : \(code)")
if code == .Europe {
// 코드 처리
}
}
'Swift > Extention' 카테고리의 다른 글
[SWIFT]NSMutableAttributedString Extention (0) | 2023.04.24 |
---|---|
[SWIFT]String Extension 유용한 기능 (0) | 2023.04.24 |
[SWIFT]UIView Extention 유용한 기능 (0) | 2023.04.24 |
[SWIFT]URL Extention 유용한 정보 (0) | 2023.04.24 |
[SWIFT]UIDevice Extention 유용한 기능 (0) | 2023.04.18 |