[swift] Swift에서 ObjectMapper를 사용하여 객체의 속성을 전화번호 형식으로 변환하는 방법

Swift는 ObjectMapper를 사용하여 JSON 데이터를 객체로 변환하는 데에 매우 유용한 라이브러리입니다. 이 라이브러리를 사용하면 객체의 속성을 원하는 형식으로 변환할 수 있습니다. 이번 예시에서는 전화번호를 입력받고, 이를 특정 형식으로 변환하는 방법에 대해 설명하겠습니다.

ObjectMapper 설치

먼저, ObjectMapper 라이브러리를 설치해야 합니다. Podfile에 다음과 같은 코드를 추가하고, 터미널에서 pod install 명령어를 실행하여 설치합니다.

pod 'ObjectMapper'

모델 클래스 생성

해당 속성을 포함하는 모델 클래스를 생성합니다. 다음은 예시 모델 클래스입니다.

import ObjectMapper

class User: Mappable {
    var name: String?
    var phoneNumber: String?

    required init?(map: Map) {}

    func mapping(map: Map) {
        name <- map["name"]
        phoneNumber <- (map["phone_number"], PhoneNumberTransform())
    }
}

위 코드에서 phoneNumber 속성은 전화번호 형식으로 변환됩니다. 이를 위해 ObjectMapper의 TransformType 프로토콜을 구현하는 PhoneNumberTransform 클래스를 생성해야 합니다.

변환 클래스 구현

다음은 PhoneNumberTransform 클래스의 구현 예시입니다.

import ObjectMapper

class PhoneNumberTransform: TransformType {
    typealias Object = String
    typealias JSON = String

    func transformFromJSON(_ value: Any?) -> Object? {
        if let phoneNumber = value as? String {
            // 전화번호 형식으로 변환
            let formattedNumber = formatPhoneNumber(phoneNumber)
            return formattedNumber
        }
        return nil
    }

    func transformToJSON(_ value: Object?) -> JSON? {
        return value
    }

    func formatPhoneNumber(_ phoneNumber: String) -> String {
        // 전화번호 형식으로 변환하는 로직을 구현
        // 예: "010-1234-5678"
        // 예시에서는 단순히 하이픈을 추가하는 예시로 작성되어 있습니다.
        let formattedNumber = phoneNumber.prefix(3) + "-" + phoneNumber[3..<7] + "-" + phoneNumber.suffix(4)
        return String(formattedNumber)
    }
}

위 코드에서 transformFromJSON 함수는 JSON 데이터를 객체의 속성으로 변환할 때 호출되며, transformToJSON 함수는 객체의 속성을 JSON 데이터로 변환할 때 호출됩니다. formatPhoneNumber 함수는 전화번호를 원하는 형식으로 변환하는 로직을 구현하는 함수입니다.

ObjectMapper 사용

이제 ObjectMapper를 사용하여 JSON 데이터를 원하는 형식으로 변환할 수 있습니다. 다음은 변환 예시입니다.

import ObjectMapper

let json = """
{
    "name": "John Doe",
    "phone_number": "01012345678"
}
"""

if let user = Mapper<User>().map(JSONString: json) {
    print("Name: \(user.name ?? "")")
    print("Formatted Phone Number: \(user.phoneNumber ?? "")")
}

위 코드에서는 JSONString을 사용하여 JSON 데이터를 객체로 변환하고, 변환된 객체의 속성을 출력하는 예시입니다.

결론

Swift에서 ObjectMapper를 사용하여 객체의 속성을 원하는 형식으로 변환할 수 있습니다. 위 예시를 참고하여 전화번호 형식으로 변환하는 로직을 구현해보세요. ObjectMapper에 대한 자세한 정보는 링크를 참고하시기 바랍니다.