이번 글에서는 Swift의 Moya와 ObjectMapper 라이브러리를 사용하여 JSON 응답을 모델 객체로 변환하는 코드를 구현하는 예시를 설명하려고 합니다.
Moya와 ObjectMapper 소개
-
Moya는 네트워크 작업을 추상화하고 간단하게 사용할 수 있는 Swift 라이브러리입니다. HTTP 클라이언트의 추상화 계층을 제공하여 네트워크 요청을 처리하는 작업을 단순화합니다.
-
ObjectMapper는 Swift에서 JSON을 객체로 변환하기 위한 라이브러리입니다. JSON 매핑을 간단하게 수행하고, Swift 객체를 JSON으로 직렬화할 수 있습니다.
프로젝트 설정
Moya와 ObjectMapper를 사용하기 위해 프로젝트에 Cocoapods를 통해 두 라이브러리를 설치해야 합니다. Podfile
파일을 열고 아래의 내용을 추가합니다.
pod 'Moya'
pod 'ObjectMapper'
프로젝트 루트 디렉토리에서 터미널을 열고 pod install
명령어를 실행합니다.
모델 객체 생성
Moya와 ObjectMapper를 사용하여 JSON 응답을 모델 객체로 변환하기 위해서는, 우선 변환할 모델 객체를 생성해야 합니다. 예시로 User
모델을 만들겠습니다.
import Foundation
import ObjectMapper
struct User: Mappable {
var id: Int?
var name: String?
var email: String?
init?(map: Map) {}
mutating func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
email <- map["email"]
}
}
User
모델은 Mappable
프로토콜을 채택하고, id
, name
, email
속성을 가지고 있습니다. mapping
메서드에서는 JSON 키와 모델 속성을 매핑해줍니다.
네트워크 요청
이제 Moya를 사용하여 네트워크 요청을 수행하고, ObjectMapper를 사용하여 JSON 응답을 User
모델 객체로 변환해보겠습니다.
import Moya
import ObjectMapper
let provider = MoyaProvider<YourAPIService>()
provider.request(.getUser(id: 1)) { result in
switch result {
case let .success(response):
do {
let user = try response.mapObject(User.self)
print(user)
} catch {
print(error.localizedDescription)
}
case let .failure(error):
print(error.localizedDescription)
}
}
위의 코드에서는 Moya의 MoyaProvider
를 통해 네트워크 요청을 수행하고, 결과를 받아와서 ObjectMapper의 mapObject
메서드를 사용하여 JSON을 User
모델 객체로 변환합니다. 변환 결과는 user
상수에 저장되며, 이후 로직에서 활용할 수 있습니다.
결론
Moya와 ObjectMapper를 사용하여 JSON 응답을 모델 객체로 변환하는 방법에 대해 예시를 설명했습니다. 이를 통해 네트워크 요청과 JSON 매핑을 간편하게 처리할 수 있습니다. 두 라이브러리를 활용하여 손쉽게 Swift 앱 개발을 진행할 수 있습니다.
참고: