[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..
[iOS/RxSwift] API 통신에서 Single과 Observable
·
iOS/🚨 오류 그리고 해결
Sequence contains more than one element. RxSwift로 api 통신을 통해 로그인 기능 구현 중 다음과 같은 오류를 마주하였다. 이 오류와 함께 dispose가 되어버렸다. 오류를 해결하며 알게된 것들을 찬찬히 정리해보자! ✔️ Single single은 traits의 종류 중 하나로 Observable과 비슷한 기능을 수행한다. ✔️ Traits이란? Observable의 파생된 형태이다. Traits을 통해 필요한 이벤트만 사용하여 코드를 좀 더 직관적이고 명확하게 사용할 수 있도록 도와준다. ✔️ Single의 특성 Single은 항상 한 번의 흐름에 하나의 값 또는 에러를 방출한다. Single이 방출하는 이벤트는 onSuccess와 onFailure 2가지 뿐이..
View의 Drawing Cycle
·
iOS/💻 iOS Study
출시 프로젝트를 하면서 compositional layout을 사용하며 만난 오류를 해결하며 알게 된 내용을 정리해보고자 한다! Issue 셀에 들어갈 데이터에 맞게 동적으로 높이를 지정해야 했는데, 레이아웃 구성 시 아무리 estimated를 지정해줘도 높이가 처음부터 알맞게 들어가지 않았다. 여러 방법을 사용했지만 오른쪽 하단 날짜 레이블의 높이가 처음엔 맞지 않았고, 다른 날짜를 탭 후 다시 돌아오면 높이가 알맞게 들어오는 것을 알 수 있다. 해결! layoutIfNeeded() 를 호출하여 문제를 해결하였다. 추정치는 말 그대로 추정하여 높이를 설정하는 것이기 때문에 처음에 정확하게 들어갈 수 없었고, 셀에 데이터가 삽입 된 이후에 레이아웃 업데이트 요청을 해야했던 것이다.. View의 Drawi..
RxSwift 정리하기
·
iOS/🔎 swift 정리하기
💡 RxSwift 관찰 가능한 순차적 형태와 함수 형태의 연산자를 통해 비동기 이벤트를 위한 코드 사용자가 언제 어떠한 버튼을 누를지 알 수 없기 때문에 비동기 처리가 필요하다. 비동기 방식으로 이벤트를 전달하고 전달 받기 위해 RxSwift를 사용하는 것이다. 이벤트를 생성하고 전달하는 Observable 이벤트를 받아 처리하는 Observer Subscribe를 하여 Observer가 이벤트를 받는다. 💡 Observable과 Observer 이벤트 시퀀스를 비동기적으로 생성한다. Observable을 통해 이벤트를 방출(emit)할 수 있다. Observable과 Observer를 통해 Stream(데이터의 흐름)을 통제하고, Operator(just, of, take..)를 통해 ㄴㄴStream을..