성공 케이스가 아닌 실패케이스에서 주는 에러메세지도 디코딩해서 편하게 사용하기 위해 생성했다.
우선 서버에서 주는 에러메세지가 있을 수도 없을 수도 있는데 지금의 서버 응답은 이런 형태로 준다.
우선 responseString 으로 콜했을 때 받아오는 response 를 뜯어보았다.
서버에서 주는 숨겨야할 값들이 존재했기에 data 부분을 캡쳐해왔다.
세상에 data 메서드 .utf8 로 데이터 타입으로 변경해버리는 순간 출력 결과는 용량이 나옴
- 위에 있는 response.data 와 결과가 같은 dataType 이다.
그렇다는 말은 응답 값을 utf 타입으로 변환해서 JSONDecoder 의 data 부분에 그대로 넣어버리면 디코딩을 할 수 있다는 것이다.
자 그럼 에러메세지도 뽑아내보자.
responseString
- 성공했을 경우, String 으로 값을 주기 때문에 해당 값을 데이터 타입으로 변환 후 → do-try-catch 구문을 이용해 디코딩
- 실패했을 경우, response 값에 data 값이 존재하는데 거기서 데이터를 뽑아냄 → do-try-catch 구문을 이용해 디코딩
근데 생각해보니 굳이 String 값으로 받을 필요가 없다.
responseData 라는게 알라모파이어에 있어서 성공한 경우 애초에 Data 타입으로 던져준다.
responseData
- Data 타입으로 넘겨주기 때문에 → 디코딩 진행하면 더 깔끔해짐
제네릭을 사용한 최종 결과
- 열거형에 제네릭을 사용해서 리턴
- 실제 사용하는 뷰모델
'iOS' 카테고리의 다른 글
단락평가(short-Circuit Evaluation) (0) | 2024.05.07 |
---|---|
복잡한 ViewController 에서의 VIewDidLoad or init 순서 (0) | 2024.05.01 |
Kingfisher - Error Handling (0) | 2024.04.15 |
Custom Modal · Alert (1) | 2024.03.26 |
Background Timer (0) | 2024.03.26 |