[Swift] Swift Concurrency async / await
·
iOS/🔎 swift 정리하기
GCD (Grand Centeral Dispatch) 일반적으로 네트워크 통신을 할 때 우리는 비동기적으로 코드를 작성한다. 다음과 같이 비동기적으로 요청을 하여 응답 결과를 call back 받기 위해 completion handler를 통해 받아오고, 받아온 데이터를 화면에 반영한다. func fetchThumbnailURLSession(completion: @escaping (Result) -> Void) { let url = URL(string: "https://www.themoviedb.org/t/p/w600_and_h900_bestv2/7M2pc9OboapgtoBbkU49Aim7O5B.jpg")! let request = URLRequest(url: url, cachePolicy: .reloa..
[iOS/Kingfisher] 네트워크 통신으로 이미지 받아오기
·
iOS/🔎 swift 정리하기
Kingfisher를 몇번 사용해보았지만 정확히 무슨 기능이 있는지도 모르는 채 이미지 띄우기만 사용해보았다. 프로젝트를 진행하면서 사용해본 것들을 정리해보려 한다! ✅ 이미지 다운로드 요청 시 헤더값을 추가하여 요청하기 프로젝트 진행하면서 서버에 저장되어 있는 이미지를 주소값을 사용하여 받아와야 했다. 분명 url도 맞는데 사진이 뜨지 않아서 오류를 탐색한 결과 kingfisher를 사용하여 서버에 이미지를 요청할 때 access token과 서버 요청을 위한 key값이 필요했던 것이다.. 기존 네트워크 통신과 같게 kingfisher로 이미지 요청 시 헤더 값을 지정하면 된다! 🔎 해결 owner.mainView.imageView.kf.setImage(with: url)을 이용하여 그냥저냥 이미지를 ..
[iOS/RxSwift] CombineLatest vs Observable.zip
·
iOS/🔎 swift 정리하기
💡 CombineLatest 2개 이상의 Observable을 결합하여 하나의 Observable로 만들 때 사용한다. CombineLatest는 결합하려는 이벤트가 최소 한 번씩은 next이벤트가 emit되어야 구독을 시작하게 된다. 위의 예시는 BehaviorSubject 이벤트를 결합 한 것이다. BehaviorSubject는 초기 값을 설정하게 되어 선언 후 바로 combineLatest를 수행하게 된다. 만약! 초기값이 없는 PublishSubject를 사용한다면? a와 b 모두 한 번 emit이 되어야 combineLatest를 수행할 수 있다. a의 이벤트가 먼저 emit이 된 후 b가 emit이 되기 때문에 b가 emit되는 시점에 combineLatest를 수행할 수 있게 된다. comb..
RxSwift 정리하기
·
iOS/🔎 swift 정리하기
💡 RxSwift 관찰 가능한 순차적 형태와 함수 형태의 연산자를 통해 비동기 이벤트를 위한 코드 사용자가 언제 어떠한 버튼을 누를지 알 수 없기 때문에 비동기 처리가 필요하다. 비동기 방식으로 이벤트를 전달하고 전달 받기 위해 RxSwift를 사용하는 것이다. 이벤트를 생성하고 전달하는 Observable 이벤트를 받아 처리하는 Observer Subscribe를 하여 Observer가 이벤트를 받는다. 💡 Observable과 Observer 이벤트 시퀀스를 비동기적으로 생성한다. Observable을 통해 이벤트를 방출(emit)할 수 있다. Observable과 Observer를 통해 Stream(데이터의 흐름)을 통제하고, Operator(just, of, take..)를 통해 ㄴㄴStream을..