티스토리 뷰
저번 포스트에서의 목표를 그대로 RxAlamofire를 적용시켰습니다.
RxAlamofire, RxCodable, RxSwift를 사용하였습니다.
AirModel 클래스를 생성합니다.
방식은 저번과 같지만 Rx를 사용할 수 있다는 장점이 있습니다.
Rx 사용 시 비동기로 받는 데이터를 조금 더 편하게 수정, 전달하고 사용할 수 있습니다.
이번엔 Rx를 사용하는 만큼 프로토콜 대신 PublishSubject를 사용하여 비동기로 데이터를 전달하겠습니다.
RxAlamofire.requestData를 사용하여 이전과 같이 메소드, url, 파라미터를 전달합니다.
이후 Observable<(HTTPURLResponse, Data)>에서 저희는 Data를 사용하겠습니다. ( .map{$1} )
.map을 이용하여 json데이터를 파싱합니다. ( RxCodable사용 )
이후 받아온 데이터를 PublishSubject에 담습니다.
ViewController는 이전 포스트와 매우 비슷합니다.
delegate 대신 PublishSubject변수를 전달합니다.
또한 받아온 데이터를 ViewController에서 처리하여 UI를 변경할 수 있습니다.
전체코드입니다.
github.com/rising-jun/RxAlamofirePractice
rising-jun/RxAlamofirePractice
Contribute to rising-jun/RxAlamofirePractice development by creating an account on GitHub.
github.com
감사합니다!
'iOS > 스위프트' 카테고리의 다른 글
[Swift][DI] 의존성 주입이 도대체 왜 좋은걸까? 유지보수편 (0) | 2022.04.10 |
---|---|
[Swift][GCD]여러 쓰레드가 하나의 자원을 동시에 사용하려하면? (0) | 2022.04.03 |
[Swift][Alamofire] Alamofire 맛보기 (0) | 2021.05.12 |
[Swift][UI] 로그인화면 만들기! part.2 (0) | 2021.04.09 |
[Swift][UI] 로그인화면 만들기! part.1 (0) | 2021.04.09 |