[swift] ObjectMapper를 사용하여 JSON 데이터의 필드를 기본 값으로 설정하는 방법은?

ObjectMapper는 Swift에서 JSON 데이터를 객체로 매핑하는 데 사용되는 훌륭한 라이브러리입니다. 때로는 JSON 데이터에 일부 필드가 누락되거나 null인 경우 기본 값을 사용하고 싶을 수 있습니다. ObjectMapper를 사용하여 필드의 기본 값을 설정하는 방법을 알아보겠습니다.

먼저 ObjectMapper를 프로젝트에 추가해야 합니다. CocoaPods를 사용하는 경우, Podfile에 다음과 같은 내용을 추가한 후, pod install 명령어를 실행합니다.

pod 'ObjectMapper'

이제 ObjectMapper를 사용하여 JSON 데이터를 객체로 매핑하는 방법을 알아보겠습니다. ObjectMapper를 사용하여 객체를 매핑할 때, 매핑하려는 클래스에 Mappable 프로토콜을 채택한 후, mapping(map: Map) 메소드를 구현해야 합니다. 이 메소드 내에서 필드에 기본 값을 설정할 수 있습니다.

import ObjectMapper

class MyObject: Mappable {
    var name: String = "Default Name"
    var age: Int = 0
    
    required init?(map: Map) {
    }
    
    func mapping(map: Map) {
        name <- map["name"]
        age <- map["age"]
        
        if name.isEmpty {
            name = "Default Name"
        }
        
        if age == 0 {
            age = 18
        }
    }
}

위 예제에서는 name 필드와 age 필드의 기본 값을 설정하고 있습니다. 만약 JSON 데이터에 name 필드가 존재하지 않거나 값이 빈 문자열인 경우, name 필드는 “Default Name”으로 설정됩니다. 또한, age 필드가 0인 경우, age 필드는 18로 설정됩니다.

이제 ObjectMapper를 사용하여 JSON 데이터를 객체로 매핑할 때, 기본 값이 설정된 필드가 사용되게 됩니다.

let json = "{\"name\": \"John\", \"age\": 25}"
if let myObject = Mapper<MyObject>().map(JSONString: json) {
    print(myObject.name) // 출력: John
    print(myObject.age) // 출력: 25
}

let emptyJson = "{}"
if let myObject = Mapper<MyObject>().map(JSONString: emptyJson) {
    print(myObject.name) // 출력: Default Name
    print(myObject.age) // 출력: 18
}

위 예제에서는 첫번째 JSON 데이터에는 name 필드와 age 필드가 제공되고 있으므로, 기본 값이 아닌 값이 사용됩니다. 두번째 JSON 데이터에는 name 필드와 age 필드가 없으므로, 기본 값이 사용됩니다.

이런 식으로 ObjectMapper를 사용하여 필드의 기본 값을 설정할 수 있습니다. ObjectMapper의 자세한 사용법은 공식 문서를 참고하시기 바랍니다.