[swift] Swift에서 ObjectMapper를 사용하여 객체의 배열 속성 매핑하는 방법

Swift에서 ObjectMapper를 사용하면 JSON 데이터를 객체로 매핑할 수 있습니다. 이 기능은 객체의 배열 속성을 매핑하는 데에도 유용하게 사용될 수 있습니다. 아래는 Swift에서 ObjectMapper를 사용하여 객체의 배열 속성을 매핑하는 방법을 설명합니다.

ObjectMapper 설치

먼저, ObjectMapper를 사용하기 위해 프로젝트에 ObjectMapper를 설치해야 합니다. ObjectMapper는 Cocoapods나 Swift Package Manager를 통해 설치할 수 있습니다. Cocoapods를 사용하는 경우, Podfile에 다음과 같은 라인을 추가한 후 pod install 명령어를 실행합니다.

pod 'ObjectMapper'

Swift Package Manager를 사용하는 경우에는 Xcode의 File > Swift Packages > Add Package Dependency를 선택하고, https://github.com/tristanhimmelman/ObjectMapper.git를 입력하여 ObjectMapper를 추가합니다.

객체 정의

매핑할 객체를 정의합니다. 예를 들어, Person이라는 객체가 있고 해당 객체는 nameage 속성을 가지고 있으며, friends라는 배열 속성도 갖고 있는 경우 다음과 같이 정의할 수 있습니다.

import ObjectMapper

class Person: Mappable {
    var name: String?
    var age: Int?
    var friends: [Person]?
    
    required init?(map: Map) {
    }
    
    func mapping(map: Map) {
        name <- map["name"]
        age <- map["age"]
        friends <- map["friends"]
    }
}

매핑하기

JSON 데이터를 가져와서 객체로 매핑하는 작업을 수행합니다. 예를 들어, 다음과 같은 JSON 데이터가 있다고 가정해봅시다.

{
    "name": "John Doe",
    "age": 25,
    "friends": [
        {
            "name": "Jane Smith",
            "age": 27
        },
        {
            "name": "Michael Johnson",
            "age": 30
        }
    ]
}

해당 JSON 데이터를 객체로 매핑하는 코드는 다음과 같습니다.

import ObjectMapper

let jsonString = """
{
    "name": "John Doe",
    "age": 25,
    "friends": [
        {
            "name": "Jane Smith",
            "age": 27
        },
        {
            "name": "Michael Johnson",
            "age": 30
        }
    ]
}
"""

if let person = Mapper<Person>().map(jsonString) {
    // 매핑에 성공한 경우
    print(person.name) // John Doe
    print(person.age) // 25
    print(person.friends?.first?.name) // Jane Smith
    print(person.friends?.first?.age) // 27
} else {
    // 매핑에 실패한 경우
    print("매핑에 실패하였습니다.")
}

위 코드를 실행하면 JSON 데이터가 객체로 매핑되어, 해당 객체의 속성을 사용할 수 있게 됩니다.

결론

Swift에서 ObjectMapper를 사용하여 객체의 배열 속성을 매핑하는 방법을 알아보았습니다. ObjectMapper를 사용하면 JSON 데이터를 간편하게 객체로 매핑할 수 있으며, 복잡한 JSON 구조에서도 이를 쉽게 처리할 수 있습니다.