Swift

(CS) 네트워크 대비 지식쌓기 (2/2)

pockpock 2024. 7. 12. 22:19

 

 

네트워크 대비 지식 쌓기 1편과 내용이 이어집니다!

https://daesungstudy.tistory.com/91

 

 

Swift Codable

 

Swift의 인코딩과 디코딩

저번에, UserDefaults에 정보를 넣기 위해서는 인코딩이 필요하다 했었잖슴?

오늘은 그 인코딩이 무엇인지에 대해 알아볼 예정임.

 

먼저 이 둘을 알아보기 전

Swift의 Codable 프로토콜에 대해 알아보자.

Codable 안을 뜯어보면 인코딩과 디코딩으로 구현되어 있음 그니까 쉽게 말해,

인코딩과 디코딩을 합쳐놓은 프로토콜로써, 이 프로토콜을 사용하게 되면 인-디코딩이 편해진다는 것임.

Codable 구조

 

요바바!! Decodable & Encodable 이라자너~


 

인코딩(Encodable)

데이터를 특정 형식으로 변환하는 것

인코딩 예시

이런식으로 Codable을 사용하여 인코딩 할 수 있음

 

 

디코딩(Decodable)

디코딩 예시

 

인코딩 된 데이터를 다시 원본으로 변환하는 것

이런식으로 코드를 짤 수 있음

 


 

Swift URLSession

URLSession은 서버와 통신하기 위해 Swift에서 제공하는 클래스임

이 클래스는 HTTP와 HTTPS의 요청을 만들고, 데이터를 다운로드 하고 파일을 업로드 하며 다양한

네트워킹 작업을 간편하게 수행할 수 있도록 도와줌

 

URLSession을 다루기 위해서는 크게 2가지 개념을 알아야함

 

1. URLSessionConfiguration

Configuration 이란 환경 설정을 의미함

보통 URLSession으로 네트워크 통신을 하되, 여러가지 커스텀한 설정들을 할 때 이용함

예를 들어, 네트워크 통신의 타임아웃 시간설정, 네트워크 통신 캐시 정책 설정 등을 세팅할 수 있음

 

세션의 동작 방식을 설정하는 데 사용되며 크게 세 가지 기본설정이 있음

 

                                       1-1) default : 디스크에 캐시된 데이터를 사용하며, 쿠키와 같은 영구적인 저장소를 사용

                                       1-2) ephemeral : 디스크에 아무것도 저장하지 않고, 세션이 끝나면 모든 데이터가 삭제됨

                                       1-3) background : 앱이 백그라운드에 있을 때도 네트워킹 작업을 계속할 수 있음

 

2. URLSessionTask

네트워크 요청을 나타내는 객체임

네트워크 통신을 할 때 어떤 테스크를 수행할 것 인지 결정이 가능함

 

         2-1) URLSessionDataTask : GET 요청, 서버로부터 데이터를 가져오거나 서버에 데이터를 전송할 때 사용

         2-2) URLSessionDownloadTask : 파일 다운로드를 처리할 때 사용. 백그라운드 다운로드 지원

         2-3) URLSessionUploadTask : 파일 업로드를 처리할 때 사용. 백그라운드 업로드 지원