[swift] Swift에서 ObjectMapper를 사용하여 객체의 속성을 돈 단위로 변환하는 방법

Swift에서는 ObjectMapper라는 라이브러리를 사용하여 JSON 데이터를 객체로 변환하거나, 객체를 JSON 데이터로 변환할 수 있습니다. 이번에는 ObjectMapper를 사용하여 객체의 속성을 돈 단위로 변환하는 방법에 대해 알아보겠습니다.

ObjectMapper 라이브러리 설치

먼저 ObjectMapper를 설치해야 합니다. Swift Package Manager를 사용한다면 Package.swift 파일에 다음과 같이 추가합니다.

.package(url: "https://github.com/tristanhimmelman/ObjectMapper.git", from: "4.2.0")

CocoaPods를 사용한다면 Podfile에 다음과 같이 추가합니다.

pod 'ObjectMapper', '~> 4.2'

그리고 터미널에서 swift package update (Swift Package Manager) 또는 pod install (CocoaPods) 명령을 실행하여 라이브러리를 설치합니다.

돈 단위 변환 함수 구현

이제 돈 단위 변환을 위한 함수를 구현해보겠습니다. 예를 들어, JSON 데이터에서 “price”라는 속성을 읽어와서 센트 단위에서 달러 단위로 변환하고 싶다고 가정해봅시다.

import ObjectMapper

class Product: Mappable {
    var name: String?
    var price: Double?
    
    required init?(map: Map) {}
    
    func mapping(map: Map) {
        name <- map["name"]
        price <- (map["price"], CentToDollarTransform())
    }
}

class CentToDollarTransform: TransformType {
    typealias Object = Double
    typealias JSON = Int
    
    func transformFromJSON(_ value: Any?) -> Double? {
        if let cents = value as? Int {
            return Double(cents) / 100
        }
        return nil
    }
    
    func transformToJSON(_ value: Double?) -> Int? {
        if let dollars = value {
            return Int(dollars * 100)
        }
        return nil
    }
}

위의 예제에서는 ObjectMapper의 TransformType 프로토콜을 구현한 CentToDollarTransform 클래스를 사용하여 센트 단위를 돈 단위로 변환합니다. Product 클래스의 price 속성에 CentToDollarTransform을 사용하여 JSON 데이터의 “price” 속성 값을 변환하도록 매핑합니다.

돈 단위 변환 사용

이제 ObjectMapper를 사용하여 돈 단위 변환을 적용한 객체를 생성해보겠습니다.

import ObjectMapper

let json = """
{
    "name": "iPhone",
    "price": 9999
}
"""

if let product = Mapper<Product>().map(JSONString: json) {
    print(product.name) // "iPhone"
    print(product.price) // 99.99
}

위의 예제에서는 JSON 문자열을 사용하여 Product 객체를 생성하고, 변환된 돈 단위 값을 확인합니다. “price” 속성의 값이 9999에서 99.99로 변환된 것을 확인할 수 있습니다.

결론

Swift에서 ObjectMapper를 사용하여 객체의 속성을 돈 단위로 변환하는 방법에 대해 알아보았습니다. ObjectMapper를 사용하면 편리하게 JSON 데이터와 객체 사이의 변환 작업을 수행할 수 있습니다. 돈 단위 변환이 필요한 경우에는 TransformType 프로토콜을 구현하여 원하는 변환 작업을 수행할 수 있습니다.

참고 자료