본문 바로가기

iOS

서버에서 주는 에러메세지도 디코딩으로 받아보기

성공 케이스가 아닌 실패케이스에서 주는 에러메세지도 디코딩해서 편하게 사용하기 위해 생성했다.

 

우선 서버에서 주는 에러메세지가 있을 수도 없을 수도 있는데 지금의 서버 응답은 이런 형태로 준다.

 

우선 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