[swift] Swift ObjectMapper를 사용한 비즈니스 로직 구현 방법은?

Swift ObjectMapper는 Swift에서 JSON 데이터를 객체로 변환하거나 객체를 JSON으로 변환하는 라이브러리입니다. 비즈니스 로직에서는 API 응답을 JSON으로 받아와서 객체로 변환하거나, 객체를 JSON으로 변환하여 API 요청을 보낼 때 주로 사용됩니다.

ObjectMapper 설치

먼저, ObjectMapper를 설치해야 합니다. Swift Package Manager를 통해 설치할 수 있습니다. 프로젝트 디렉토리에서 Package.swift 파일을 열고 dependencies 섹션에 다음과 같이 추가합니다:

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

그리고 나서 터미널에서 다음 명령을 실행하여 의존성을 업데이트합니다:

$ swift package update

모델 클래스 작성

비즈니스 로직에 맞는 모델 클래스를 작성해야 합니다. 모델 클래스는 ObjectMapper의 Mappable 프로토콜을 준수해야 합니다. 예를 들어, 사용자 정보를 담는 User 모델 클래스를 작성해보겠습니다:

import ObjectMapper

class User: Mappable {
    var id: Int?
    var name: String?
    var email: String?

    required init?(map: Map) {
        
    }

    func mapping(map: Map) {
        id <- map["id"]
        name <- map["name"]
        email <- map["email"]
    }
}

Mappable 프로토콜을 채택하고, id, name, email 등 모델에 필요한 속성들을 선언한 후, required init?(map: Map) 메서드와 mapping(map: Map) 메서드를 구현해야 합니다.

JSON 데이터를 객체로 변환

API 응답과 같은 JSON 데이터를 객체로 변환하는 경우, 다음과 같이 ObjectMapper를 사용할 수 있습니다:

import ObjectMapper

let jsonString = """
{
    "id": 123,
    "name": "John",
    "email": "john@example.com"
}
"""

if let user = Mapper<User>().map(JSONString: jsonString) {
    // 변환에 성공한 경우
    print(user.id)    // 123
    print(user.name)  // John
    print(user.email) // john@example.com
} else {
    // 변환에 실패한 경우
    print("JSON 데이터를 객체로 변환할 수 없습니다.")
}

JSONString이라는 API 응답 데이터를 JSON 형식으로 처리하고, 이를 Mapper<User>().map 메서드를 사용하여 User 객체로 변환합니다. 변환에 성공하면 User 객체에 포함된 속성들을 사용할 수 있습니다.

객체를 JSON으로 변환

객체를 JSON으로 변환하여 API 요청과 같은 경우, 다음과 같이 ObjectMapper를 사용할 수 있습니다:

import ObjectMapper

let user = User()
user.id = 123
user.name = "John"
user.email = "john@example.com"

if let jsonString = Mapper().toJSONString(user) {
    // 변환에 성공한 경우
    print(jsonString)
} else {
    // 변환에 실패한 경우
    print("객체를 JSON으로 변환할 수 없습니다.")
}

User 객체를 생성하고 속성들에 값을 할당합니다. 그리고 toJSONString 메서드를 사용하여 객체를 JSON 형식의 문자열로 변환합니다. 변환에 성공하면 JSON 형식의 문자열을 사용할 수 있습니다.