본문 바로가기

iOS/Combine Framework

(8)
[Swift] No7. Deep dive into AnyPublisher and eraseToAnyPublisher( )🤩 | Combine 안녕하세요. 이번 포스트는 Combine 프레임워크를 사용할 때 정말 많이 작성하고 호출했던 타입인 AnyPublisher와 eraseToAnyPublisher에 대해 탐구하려고 합니다. 왜 사용하는지, 어떻게 사용하면 좋을지에 대해 프로젝트를 하며 경험했고 알게 된 개념을 공유하려고 합니다😄. 컴바인 공부할 초기에는 기술 포스트에서 AnyPublisher를 왜 사용하는지, 왜 eraseToAnyPublisher를 사용하는지, 타입을 지워준다는 개념은 정말 잘 알겠는데 그렇게 확 와닿지가 않았었습니다. 그때 당시의 저와 같은 상황인 분들이 이 포스트를 보면서 Publishers의 구체적인 타입을 AnyPublisher로 wrapping하여 추상화하는 이유를 이해하시면 좋을것 같습니다😆 1. AnyPu..
[Swift] MVVM에서 Combine을 활용한 ViewModel Input/Output binding 개념 완벽 부수기 +_+ | MVC와 MVVM 차이 진짜 뿌수기!!!! 안녕하세요! 이번 포스트는 MVVM 패턴을 사용할 때 Conbine framework로 ViewModel과 View를 Input/Output binding하는 방법에 대해 소개하려고 합니다. 뷰에서 발생 가능한 Input!, 그리고 View가 화면을 그려야 할 State!를 ViewModel은 Output!함으로 뷰의 render가 진행됩니다. 소프티어 부트캠프 활동을 하며 새로 배운 개념이 많아 기존의 글을 리빌딩 했습니다.그 전에! MVVM과 MVC 아키텍처 패턴의 차이가 무엇인지 명확하게 알아야합니다. 둘의 차이가 무엇인지 아시는 분들만이 MVVM을 잘 활용한다고 할 수 있습니다. 저는 제 나름대로 MVVM과 MVC 아키텍처의 차이점을 정리해봤습니다(관련 포스트 링크). MVC, MVVM 차이를 이..
[Swift] No6. Transforming operator 개념 완전 뿌수기!! | Combine 안녕하세요! 이번 포스트는 Combine framework에서 publisher 와 subscriber간 subscription의 값을 바꾸는 operator 공부한 내용을 정리하려고 합니다. 주제는 transform 타입의 map, tryMap, flatMap + compactMap(_:) collect, scan. Upstram의 output value가 nil인 경우 대처 가능 한 replaceNil(with:), replaceEmpty(with:). 주의사항!! upstream publihser라는 말을 사용하는데 이는 operator보다 위에 있는 publisher의 흐름을 칭합니다. downstream은 특정 publihser가 값을 방출했을 때 그 하위에 있는 stream 입니다. subsc..
[Swift] No5. Subscription, Cancellable 개념 뿌수기!!! | Combine 안녕하세요. 이번 포스트는 Combine에서 Cancellable과 Subscription에 대해 공부한 개념을 정리하려고 합니다. 1. What is Cancellable and AnyCancellable ? 컴바인 사용할 때 커스텀 subscriber 구현도 하긴 하지만?! 저는 sink(receiveCompletion:receiveValue:), sink(receiveValue:)를 많이 사용합니다. 물론 @Publihsed를 사용할 때 assign(to:on:)도 사용합니다. 이 세 개 operator의 공통적인 특징은 AnyCancellable을 반환하는 것입니다. AnyCancellable은 Cancellable 프로토콜을 채택하는 final class입니다. Cancellable은 cance..
[Swift] No4. Hi Failure, Error Handling 개념 뿌수기!!! & Error Deep Dive!! | Combine Combine framework를 사용하면서 Error는 잠재적으로 발생할 수 있습니다. 프로그램 실행 중 발생한 Error는 throwing 됩니다. 이때 catching. 예외 처리를 할 수 없다면 런타임 오류가 발생하게 됩니다. 앱은 멈추게 됩니다. 따라서 에러를 처리할 수 있는 다양한 방법에 대해서 정리하려고 합니다. 1부는 정말 간단하게 Error의 특징에 대해 짧게 알아보고 2부에선 Combine을 사용할 때 발생한 에러를 처리하는 방법에 대해 탐구할 것입니다. 1. What is Error? Error Handling Deep Dive :) Swift에서 에러는 Error protocol을 따릅니다. 반드시 Error 프로토콜을 채택한 object를 구현해야 Swift error handli..
[Swift] No3. Hi subject! PassthroughSubject vs CurrentValueSubject 개념 완벽 뿌수기 | Combine Swift Combine. Subject PassthroughSubject, CurrentValueSubject에 대한 개념을 정리하려고 합니다 : ] What is Publiser? Subject를 소개하기 전에 잠깐,, 이전에 소개했던 publisher 예제입니다. let requestBeverage = Notification.Name("RequestBeverage") let publisher1 = [1,2,3,4,5,6].publisher let publisher2 = Just([1,2,3,4,5,6]) let publisher3 = Future { promise in promise(.success([1,2,3,4,5,6])) } let publisher4 = NotificationCenter.de..
[Swift] No2. Publihser, Subscriber. 개념 파해치기 in Combine 안녕하세요. Publihser와 Subscriber을 공부하면서 배운 개념들을 소개합니다. What is Pubilsher? 이전 파트에서 소개 했지만 다시 간력하게 설명하겠습니다. "시간의 흐름"에 따라 Publisher's Output type의 값을 하나 또는 여러 Subscriber에게 publish(전송) 전송할 수 있습니다. 주의해야 할 것은 Publisher's Output, Failure generic type 과 Subscriber's Input, Failure generic type이 일치해야만 Publisher는 Subscriber에게 값을 전달할 수 있습니다. 지금 자판기가 있습니다. 자판기에는 많은 음료수가 있습니다. 많은 사람이 자판기를 이용하기 위해 줄을 서 있습니다. 음료수를..
[Swift] No1. Hi! Combine. 컴바인 전반적인 개념 파해치기 안녕하세요. 지금부터 컴바인을 소개 합니다! 배우면서 햇갈렸던 부분을 자세하게 풀어 나가려고 합니다. What is combine in swift? WWDC 2019 Introducing Combine. Apple에서 소개한 Swift framework입니다. asynchronous reactive programming을 할수 있는 특징이 있습니다. Reactive programming으로 Apple's native, Apple's platform인 Combine과 thrid-party인 Rx가 있습니다. 경력이 좀 있는 RxSwift와 Combine 뭐를 배울지 고민 했지만 결국 둘 다 배워 보려고 합니다. Will Combine Kill RxSwift? 유명한 글이 있어서 우선순위로 1순위로 컴바인 ..