Swift enum 활용하기

Swift를 사용한다면 Enum이 정말 활용도가 높다는 걸 알 수 있다.

나 같은 경우에 사용자의 기기 정보들을 가지고 있어야하는 객체가 필요했다. 그리고 서버에 전송할 수 있어야 했다. 그래서 enum을 활용하여 나는 기기 정보들을 저장할 변수를 만들기로 했다.

class DeviceService {
    static let shared = DeviceService()
}

위와 같은 클래스가 있다고 생각해보자. 일단 데이터를 항상 가지고 있어야할테니 싱글톤 객체를 정의한 뒤 클래스 내부 변수를 만들면 된다.

이제 기기 정보를 담을 Enum을 정의하자.

enum DeviceInformation {
    /// 기기 고유번호
    case uuid
    /// 기기 OS 버전
    case osVersion
    /// 기기 모델명
    case name
    /// 앱 버전
    case appVersion
    /// 기기 OS
    case os
    /// FCM 토큰
    case token
}

이제 DeviceInformation 에 접근하면 되는데.. 아직 접근해도 제대로 활용할 수 없다.

하나만 더 추가해보자. Swift의 Enum은 재밌게도 변수도 가질 수 있다.

var key: String {
    switch self {
    case .uuid: return "user_device_uuid"
    case .osVersion: return "user_device_os_version"
    case .name: return "user_device_info"
    case .appVersion: return "user_device_app_version"
    case .os: return "user_device_type"
    case .token: return "user_device_push_token"
    }
}

위 처럼 더 추가해주면 DeviceInformation.uuid.key 를 접근할 시 user_device_uuid 값이 반환된다! 위를 이용해서 POST할때 사용될 Key를 정의할 수도 있으며 다양한 방법으로 활용할 수도 있다. 예를 들면 API Endpoint 를 정의한다던가..?

Swift를 사용한 지 많은 시간이 흐른 것도 아니지만 배우면 배울수록 정말 매력있는 언어라고 생각된다. 끗.