[swift] ObjectMapper를 사용하여 Swift 객체에 빠진 필드가 있는 경우 기본값을 제공하는 방법은 무엇인가요?

Swift의 ObjectMapper는 JSON 데이터와 Swift 객체 간의 매핑을 단순화하는 라이브러리입니다. ObjectMapper를 사용하면 JSON 데이터를 기반으로 Swift 객체를 만들거나, Swift 객체를 JSON 데이터로 변환할 수 있습니다.

때로는 JSON 데이터에는 필드가 빠져있을 수도 있습니다. 이 때 ObjectMapper를 사용하여 기본값을 제공할 수 있습니다.

아래는 ObjectMapper를 사용하여 기본값을 제공하는 예시 코드입니다.

import ObjectMapper

class User: Mappable {
    var name: String = ""
    var age: Int = 0
    var email: String = ""
    
    required init?(map: Map) {}
    
    func mapping(map: Map) {
        name <- map["name"]
        age <- map["age"]
        email <- map["email"]
    }
    
    // ObjectMapper에서 필요한 초기화 메서드
    func injectMissingFields() {
        if name.isEmpty {
            name = "Unknown"
        }
        
        if age == 0 {
            age = 18
        }
        
        if email.isEmpty {
            email = "N/A"
        }
    }
}

let json = """
{
    "name": "John Doe"
}
"""

if let user = Mapper<User>().map(JSONString: json) {
    user.injectMissingFields()
    print(user.name)   // "John Doe"
    print(user.age)    // 18
    print(user.email)  // "N/A"
}

위의 예시 코드에서 User 클래스는 ObjectMapper의 Mappable 프로토콜을 채택하고 있습니다. User 클래스에는 초기화 메서드와 매핑 메서드가 있습니다. 매핑 메서드에서는 JSON 데이터의 필드와 Swift 객체의 프로퍼티를 매핑합니다.

위의 코드에서는 injectMissingFields() 메서드에서 필드가 빠진 경우 기본값을 제공하도록 구현되어 있습니다. 만약 이름이 비어있으면 “Unknown”, 나이가 0이면 18, 이메일이 비어있으면 “N/A”로 값을 설정합니다.

이후에 JSON 데이터를 ObjectMapper를 사용하여 User 객체로 매핑한 뒤 injectMissingFields() 메서드를 호출하여 필드의 기본값을 제공합니다.

결과적으로, User 객체의 필드가 빠진 경우에도 기본값이 제공되어 정상적으로 동작합니다.

참고자료: