ENUM
-
Swift Enum - 4Programming/Swift(iOS) 2021. 4. 1. 22:33
이번에는 enum rawValue를 이용해보겠습니다. 아래 코드의 문제는 뭘까요? switch의 case에 문자열로 구분하므로, 실패(default)에 대한 구현을 항상해야됩니다. 반환값이 String Optional이므로 호출부에서 if let ~으로 한번 더 처리해야된다. 대문자를 따로 해줘야 한다. func getAvatarImageFileName(for fileExtension:String) -> String? { switch fileExtension.lowercased() { //문자열에 대한 switch ~ case 처리는 현재 case 이외의 값도 올 수 있으므로 default를 추가해야된다 case "jpg", "jpeg": return "avatar.jpg" case "bmp": retu..
-
Swift Enum - 3Programming/Swift(iOS) 2021. 4. 1. 21:15
이번에는 enum을 가지고 struct나 class를 대체하는 것을 공유하려고 합니다. 아래 두 struct를 보면, 중복된 속성이 존재합니다. struct User { let email:String let password:String let joinDate:Date var level:Int var exp:Int } struct Admin { let email:String let password:String let joinDate:Date var logs:[String] } 중복된 속성을 해결하려면 어떻게 해야될까요? 클래스의 상속을 이용하면 부모클래스에 공통 속성을 두고, 자식 클래스에서 사용하면 됩니다. 하지만 부모 클래스에 변경이 있을 때 자식 클래스에서도 변경을 해줘야 되므로 기존 설계 구조를 계..
-
Swift Enum - 2Programming/Swift(iOS) 2021. 4. 1. 20:58
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("unSu..