티스토리 뷰
일반적으로 통신을 하게 되면
서버에 무언가를 요청하거나 혹은 서버에서 값을 받아오게 되는데
이때 이를 도와주는 도구중 하나인 ObjectMapper 를 이야기해볼까합니다.
(저의 경우 Alamofire 와 같이 사용합니다. Alamofire 는 다음에 포스트 할께요.)
사용하실 분들은 아래 부분을 Podfile에 추가해주세요.
pod 'ObjectMapper'
간략히 이야기하면 통신을 하기 전 혹은 통신을 한 후 데이터를
쉽게 json형태로 표현하는 걸 도와준다고 생각하시면 됩니다.
더 간단히 비유하면
서버에 보내는 택배상자를 포장하는 걸 도와주거나
서버에서 온 데이터를 보기좋게 만들어주는 역할을 한다고 생각하시면됩니다.
(필수는 아니에요)
예제를 보면 좀 더 간단히 알수있습니다.
(약간 변수 선언한다고 생각하시고 간단히 생각하면 쉬워요.)
* 시작 전에 아래 부분 추가해주세요.
import ObjectMapper
그럼 간단한 예를 만들어봅시다.
예를 들어 서버에 로그인 정보를 보내야한다면 아래처럼 만들 수 있습니다.
class ResquestLogin : Mappable{
var userId : String? // 아이디
var password : String? // 비밀번호
var appVersion : String? // 앱 버전 정보
required init?(map: Map) {
}
func mapping(map: Map) {
self.userId <- map["userId"]
self.password <- map["password"]
self.appVersion <- map["appVersion"]
}
}
이걸 어떻게 사용하냐고요?
쉽게 말하면
[String:Any] -> ObjectMapperType
let userInfo = ResquestLogin(JSON: ["userId":"ididid","password":"pwpwpw","appVersion":"1.0.0"])
복잡해 보일 수 있지만 후에 복잡한 형식의 데이터를 주고 받을때는 유용합니다.
아마 다음포스트에 이야기가 나올 것 같은데
Alamofire 로 통신을 만들면 파라미터(Parameters)를 주어진 형식 ([String: Any]) 타입으로 만들어 보내야 하는데
이 과정을 편하게 하기 위해 위 형식을 사용한다고 생각하시면 됩니다.
무슨 소리냐고요?
즉 Alamofire 에 파라미터 부분에 아래처럼 넣고 보내면 서버에 잘 전달된다는 겁니다.
userInfo.toJSON() // 이런 식으로 전환이 가능하다는 의미입니다.
실제 통신 부분에 아래처럼 사용할 수 있다는 말입니다.
(아래처럼 코드를 작성하면 해당 파라미터를 서버에 보내겠다는 의미입니다.)
// 해당 코드는 Alamofire 연관 코드입니다.
//import Alamofire 가 필요로 합니다 (pod 설치 포함)
AF.request(.....,parameters: userInfo!.toJSON(),.....)
//앞 뒤로 들어가야하는 부분이 있지만 간략히 작성하면
그럼 받는 부분에서는 어떻게 쓴다는 걸까요?
간단히 생각하면 [String:Any]로 가져온 값을
저희가 미리 만든 부분에 넣어 사용한다고 생각하시면 됩니다.
예를 들면 아래처럼 말이죠
(response 는 [String:Any] 타입입니다.)
ObjectMapperType -> [String:Any]
guard let responseData = Mapper<ResquestLogin>().map(JSON: response) else { return }
위처럼 선언하시면 아래처럼 원하는 값만 쉽게 가져 올 수 있습니다.
responseData.password
아무래도 처음 보시는 분들이 보기에는 생소하기도 하고
왜 사용을 하는지 감이 잘 안 오실 수 있습니다.
실제로는 다른 부분들이랑 같이 사용하는 경우가 많은데
ObjectMapper 만 따로 분류해서 봐서 더 그런 것 같네요.
그래서 다음에 올릴 Alamofire 편에서 한번 같이 사용되는 부분을 정리해 볼 생각입니다.
(해당 편은 내용을 길게 할지 짧게 할지 정하느라 시간이 좀 걸릴 것 같아요.)
그럼 오늘도 파이팅입니다.
'iOS개발 > Swift 통신' 카테고리의 다른 글
Swift Alamofire 세부 설정편 (0) | 2022.12.29 |
---|---|
Swift Alamofire 간단 서버에서 값 가져오기 기본편 (0) | 2022.12.27 |
Swift FCM 연결용 AppDelegate (Only Code) (0) | 2022.12.02 |
Swift 날씨 api 연결해보기 Only 코드 (0) | 2022.12.01 |
Swift 날씨 api 연결해보기 3단계(완) (0) | 2022.12.01 |