-
Swift Enum - 2Programming/Swift(iOS) 2021. 4. 1. 20:58728x90
enum 두번째 예제입니다.
아래 예제에서 arr를 순회하면서 출력하려면 arr의 요소에 따라서 분기하는 처리가 필요합니다.
또한 'Any' 타입이기때문에 switch ~ case에서 항상 'default'가 붙어야 합니다.
let arr:[Any] = [ Date(), "Hello", 100, 3.14] for element in arr { switch element { case let v as Date: print("Date - \(v)") case let v as String: print("String - \(v)") case let v as Int: print("Int - \(v)") case let v as Float: print("Float - \(v)") default: print("unSupported type") } } for element in arr { switch element { case is Date: print("Date") case is String: print("String") case is Int: print("Int") case is Float: print("Float") default: //any는 어떤 타입도 포함할 수 있으므로 default추가 print("unSupport Type") } }
하지만 enum을 이용하면 좀 더 깔끔히 표현될 수가 있습니다.
collection에 나올 수 있는 타입이 DataType으로 제한되기 때문에, case가 실패할 때를 대비하여 추가하는 'default'에 대한 부분이 필요가 없습니다.
enum DataType { case date(Date) case string(String) case int(Int) case float(Float) } let arr2:[DataType] = [.date(Date()), .string("Hello"), .int(42), .float(3.14)] for ele in arr2 { //default를 사용안해도 되고, 타입캐스팅에 대해서 안정성 보장, unsupport type이 필요하지 않음 switch ele { case let .date(date): print(date) case let .string(string): print(string) case let .int(int): print(int) case let .float(float): print(float) } }
'Programming > Swift(iOS)' 카테고리의 다른 글
Swift Enum - 4 (0) 2021.04.01 Swift Enum - 3 (0) 2021.04.01 Swift Enum - 1 (0) 2021.04.01 Swift Tuple (0) 2021.04.01 Swift 언어의 특징 (0) 2021.04.01