rxswift [RxSwift] 개념 정리 Observer Pattern 하지만 Observer Pattern 을 사용한다면 event 가 일어나는 순간 바라보고 있던 옵저버들이 반응하게 하는 것이 가능하다. 이벤트 안에는 이 이벤트를 바라보고 있는 Observer1, Observer2 들을 소유하고 있다. Observable Stream 을 가지고 비동기 프로그래밍을 하는 API Observable ( Observable 예제 1 ... swiftrxswiftrxswift RxSwift - Observable vs Subject 차이점 Subject는 SubjectType을 준수 하는 객체이며, 한편 으로 ObservableType 역시 준수 하고 있습니다. 그렇기에 Observable나 Observer 처럼 행동이 가능 합니다. Observable과 Subject와 차이점이 있다면 Observable은 Unicast 방식 이지만, Subject는 Multicast 방식 이라는 차이점을 가지고 있습니다. UniCast or... multicastunicastrxswiftmulticast Swift - RxCocoa RxSwift와 별도로 추가해주어야 사용할 수 있습니다 RxCocoa는 단방향성을 갖고 있습니다 Producer는 값을 생성하고, Consumer는 값을 처리 합니다. observableType : 값을 관찰할수 있습니다. observerType : 값을 주입시킵니다. Binder는 옵저버 타입으로 3가지 특징이 있습니다. 옵저버타입이기 때문에 새로운 값을 전달할 수 있지만 구독자를 추가할 ... rxswiftRxCocoaswiftRxCocoa Observable, Trait ( Single, Maybe, Completable ), Subject just → 원소 하나만 of → 원소 여러 개 from → 오직 배열의 형태만 가짐 empty → 즉시 종료할 수 있는 observable, 0개의 값을 리턴하고 싶은 observable 쓰고 싶을 때 사용 never → 작동은 하지만 아무 것도 방출하지 않음 range → 범위 설정 create → 직접적인 코드 구현을 통해 옵저버 메서드를 호출하여 옵저버블을 생성 deffered → o... rxswiftiOSobservableiOS [RxSwift] UI의 data타입을 Driver<>로 하는 경우? 먼저 RxCocoa가 가지는 Trait에는 driver와 signal이 있습니다. 두 가지 trait 모두 UI층에서 reactive programming을 위해 사용됩니다. 따라서 이와 같은 두 가지 특징을 공통적으로 가집니다. 오류 반환하지 않음 메인스레드에서의 실행을 보장 그렇기에 UI의 데이터를 뿌려주기 위해서는 driver 또는 signal를 사용하는게 좋습니다. Driver와 Si... rxswiftrxswift RxSwift - Relay Relay Class는 RxCocoa4에서 구현되었고, PublishRelay와 BehaviorRelay클래스가 존재합니다. error , completed Event 가 존재하지 않아 생명주기 종료가 없습니다. Dispose 말곤 종료가 없기 때문에 UI 에 접목시키기 좋습니다. Event 의 종류는 accept 만 존재하고 .next 로 방출합니다. PublishSubject 와 비슷한 ... rxswiftswiftrxswift RxSwift Ch1 Rx is a generic abstraction of computation expressed through Observable interface, which lets you broadcast and subscribe to values and other events from an Observable stream. Rx는 관찰가능한 인터페이스를 통해 표현되는 계산의 일반적인 추상화입니다. 이를... rxswiftrxswift 스트림을 하나의 데이터로 바꾸는 연산자 🔮 마블 다이어그램 출처: 복수의 데이터를 발행하는 스트림을 하나의 데이터로 바꿔주는 연산자들입니다. 스트림에 있는 데이터들을 정의된 accumulator를 통해 하나의 데이터로 합쳐서 발행합니다. 최종적으로 합쳐진 결과는 스트림이 complete 되야지 발행이 됩니다. accumulator에 연산자만 전달하는 경우 accumulator에 클로저를 전달하는 경우 accumulator에 전달... iOSrxswiftswiftiOS [RxSwift] Signal과 Driver를 알아보자 ! 반응형 프로그래밍인 Reactive X를 한창 배우는 요즘, Driver는 쓰는 용도를 알았지만 Signal이라는 생소한 개념이 등장해서 공부해보려고 한다. 결론부터 말하자면, Signal은 PublishSubject와 비슷하고 Driver는 BehaviorSubject와 비슷하다고 할 수 있다. 그렇다면 두 특성에 대한 공통점과 차이점은 무엇이 있을까? 💡 Signal과 Driver는 Rx... rxswiftRxCocoaRxCocoa 스트림을 결합하는 연산자 두 개 이상의 스트림을 합쳐서 새로운 스트림을 만들어 내는 연산자들입니다. 특정 스트림의 맨 앞에 해당 데이터를 끼워넣는 연산자입니다. startWith의 인자로 전달된 값은 구독하자마자 바로 발행됩니다. 복수의 스트림을 이어붙이는 형식입니다. 배열에 전달된 순서로 단순히 이어 붙입니다. 이전의 스트림이 completed 되기 전 까지 다음 stream이 발행으로 해도 concat은 발행하지... operatoriOSrxswiftswiftiOS 스트림의 데이터를 변형하는 연산자들 🔮 마블 다이어그램 출처: 스트림의 데이터들을 변형해서 또 다른 데이터를 만들어 내는 연산들입니다. 모든 순수 함수가 그러하듯이 스트림에 있는 데이터 원본을 변형하는 부작용이 없습니다. complete되는 순간에 모든 stream의 데이터를 array에 담아서 발행합니다. 아래 마블 다이어그램에서도 볼 수 있듯이 complete가 되기 전에는 아무 것도 발행하지 않다가 complete가 되... rxswiftreactivexOperatorsOperators 스트림을 필터링하는 연산자들 🔮 마블 다이어그램 출처: 연산자는 Observable에서 발행한 데이터를 가공하는 역할을 합니다. 기본적으로 ReactiveX의 연산자들은 순수 함수 (Pure Function)이기 때문에 Thread-Safety를 충족합니다. (순수함수란 부작용을 일으키지 않는 함수를 의미합니다. 여기서 부작용은 원본 데이터의 수정한다는 의미입니다.) Observable이 발행한 데이터들을 Filter... operatorrxswiftreactivex연산자operator RxSwift - Observable & Observer Observables 개념이란 - Observables Observable 클래스는 Rx코드 기반으로 T(제너릭)형태의 데이터를 전달 할 수 있는 이벤트 들을 비동기적으로 생성하는 기능입니다. 간단하게 말해서 다른 클래스에서 emit(방출)하는 값을 구독할수 있게 해준다는 의미 이다. Observable는 ObservableType 프로토콜을 준수한다 또한 ObsrvableType 프로토콜은... rxswiftrxswift RxSwift - Mathematical & Aggregate & Connectable Observable Operators concat 은 두개의 Observable 에서 방출되는 Event 를 결합하여 이유는 위 이미지 와 debug 를 통해 알수 있습니다. concat 연산자는 첫번째 Observable 의 생명주기가 종료된후 두번째 Observable 를 방출하여 결합합니다. 또한 두개의 subject 둘중 하나라도 onCompleted Event 가 실행되지 않는다면 observer 는 onNext Eve... rxswiftswiftrxswift Observables and Observers # 2 Observable -> Observer로 이벤트가 전달되는 시점은 Observer가 Observable을 구독하는 시점이다. Observer는 한번에 두개 이상의 이벤트를 동시에 처리하지 않는다. 따라서, Observable은 Observer가 하나의 이벤트를 처리한 후에 이어지는 이벤트를 전달한다. Observables and Observers # 1 게시물에서 Observable을 생성... rxswiftrxswift RxSwift, Observable이란? Observable은 이벤트를 전달한다. 아래는 라는 글인데, 제네릭 타입 매개변수를 연관값으로 사용하는 이벤트, 에러 및 완료 케이스 전체를 추상화해서 Event라는 공간을 만드는 것을 볼 수 있다.(실제도 이렇게 구현되어 있다) 위에서 살펴본 것처럼 Observable은 세 가지 이벤트를 비동기적으로 전달한다. 이벤트에 값(숫자나 커스텀한 인스턴스등과 같은 값을 가질 수 있고 탭과 같은 ... rxswiftrxswift Subject와 Relay 발행할 것이 미리 정해진 Observable과는 다르게 일단 구독을 하고 추후에 발행을 하는 객체가 Subject입니다. Observable Subject 누군가가 구독을 해야 발행 구독을 하지 않아도 개발자가 원하는 때에 발행 가능 각 구독자에게 따로 발행 모든 구독자에게 동시에 발행 Publish Subject 가장 기본이 되는 Subject입니다. 구독하기 전에도 발행할 수도 있지만 구... RelayrxswiftSubjectRelay [RxSwift] TableView 공부하기 (1) CoCoa TableView는 저번에 다 했으니, RxSwift에서 TableView를 사용하는 방법에 대해 알아보도록 하자 Swift Package Manager로 RxSwift/RxCocoa/RxDatasoruce 추가 ViewController를 Navigation Controller에 embed하고 스토리보드로 ViewController에 tableView와 cell(identifie... rxswiftrxdatasourcerxdatasource
[RxSwift] 개념 정리 Observer Pattern 하지만 Observer Pattern 을 사용한다면 event 가 일어나는 순간 바라보고 있던 옵저버들이 반응하게 하는 것이 가능하다. 이벤트 안에는 이 이벤트를 바라보고 있는 Observer1, Observer2 들을 소유하고 있다. Observable Stream 을 가지고 비동기 프로그래밍을 하는 API Observable ( Observable 예제 1 ... swiftrxswiftrxswift RxSwift - Observable vs Subject 차이점 Subject는 SubjectType을 준수 하는 객체이며, 한편 으로 ObservableType 역시 준수 하고 있습니다. 그렇기에 Observable나 Observer 처럼 행동이 가능 합니다. Observable과 Subject와 차이점이 있다면 Observable은 Unicast 방식 이지만, Subject는 Multicast 방식 이라는 차이점을 가지고 있습니다. UniCast or... multicastunicastrxswiftmulticast Swift - RxCocoa RxSwift와 별도로 추가해주어야 사용할 수 있습니다 RxCocoa는 단방향성을 갖고 있습니다 Producer는 값을 생성하고, Consumer는 값을 처리 합니다. observableType : 값을 관찰할수 있습니다. observerType : 값을 주입시킵니다. Binder는 옵저버 타입으로 3가지 특징이 있습니다. 옵저버타입이기 때문에 새로운 값을 전달할 수 있지만 구독자를 추가할 ... rxswiftRxCocoaswiftRxCocoa Observable, Trait ( Single, Maybe, Completable ), Subject just → 원소 하나만 of → 원소 여러 개 from → 오직 배열의 형태만 가짐 empty → 즉시 종료할 수 있는 observable, 0개의 값을 리턴하고 싶은 observable 쓰고 싶을 때 사용 never → 작동은 하지만 아무 것도 방출하지 않음 range → 범위 설정 create → 직접적인 코드 구현을 통해 옵저버 메서드를 호출하여 옵저버블을 생성 deffered → o... rxswiftiOSobservableiOS [RxSwift] UI의 data타입을 Driver<>로 하는 경우? 먼저 RxCocoa가 가지는 Trait에는 driver와 signal이 있습니다. 두 가지 trait 모두 UI층에서 reactive programming을 위해 사용됩니다. 따라서 이와 같은 두 가지 특징을 공통적으로 가집니다. 오류 반환하지 않음 메인스레드에서의 실행을 보장 그렇기에 UI의 데이터를 뿌려주기 위해서는 driver 또는 signal를 사용하는게 좋습니다. Driver와 Si... rxswiftrxswift RxSwift - Relay Relay Class는 RxCocoa4에서 구현되었고, PublishRelay와 BehaviorRelay클래스가 존재합니다. error , completed Event 가 존재하지 않아 생명주기 종료가 없습니다. Dispose 말곤 종료가 없기 때문에 UI 에 접목시키기 좋습니다. Event 의 종류는 accept 만 존재하고 .next 로 방출합니다. PublishSubject 와 비슷한 ... rxswiftswiftrxswift RxSwift Ch1 Rx is a generic abstraction of computation expressed through Observable interface, which lets you broadcast and subscribe to values and other events from an Observable stream. Rx는 관찰가능한 인터페이스를 통해 표현되는 계산의 일반적인 추상화입니다. 이를... rxswiftrxswift 스트림을 하나의 데이터로 바꾸는 연산자 🔮 마블 다이어그램 출처: 복수의 데이터를 발행하는 스트림을 하나의 데이터로 바꿔주는 연산자들입니다. 스트림에 있는 데이터들을 정의된 accumulator를 통해 하나의 데이터로 합쳐서 발행합니다. 최종적으로 합쳐진 결과는 스트림이 complete 되야지 발행이 됩니다. accumulator에 연산자만 전달하는 경우 accumulator에 클로저를 전달하는 경우 accumulator에 전달... iOSrxswiftswiftiOS [RxSwift] Signal과 Driver를 알아보자 ! 반응형 프로그래밍인 Reactive X를 한창 배우는 요즘, Driver는 쓰는 용도를 알았지만 Signal이라는 생소한 개념이 등장해서 공부해보려고 한다. 결론부터 말하자면, Signal은 PublishSubject와 비슷하고 Driver는 BehaviorSubject와 비슷하다고 할 수 있다. 그렇다면 두 특성에 대한 공통점과 차이점은 무엇이 있을까? 💡 Signal과 Driver는 Rx... rxswiftRxCocoaRxCocoa 스트림을 결합하는 연산자 두 개 이상의 스트림을 합쳐서 새로운 스트림을 만들어 내는 연산자들입니다. 특정 스트림의 맨 앞에 해당 데이터를 끼워넣는 연산자입니다. startWith의 인자로 전달된 값은 구독하자마자 바로 발행됩니다. 복수의 스트림을 이어붙이는 형식입니다. 배열에 전달된 순서로 단순히 이어 붙입니다. 이전의 스트림이 completed 되기 전 까지 다음 stream이 발행으로 해도 concat은 발행하지... operatoriOSrxswiftswiftiOS 스트림의 데이터를 변형하는 연산자들 🔮 마블 다이어그램 출처: 스트림의 데이터들을 변형해서 또 다른 데이터를 만들어 내는 연산들입니다. 모든 순수 함수가 그러하듯이 스트림에 있는 데이터 원본을 변형하는 부작용이 없습니다. complete되는 순간에 모든 stream의 데이터를 array에 담아서 발행합니다. 아래 마블 다이어그램에서도 볼 수 있듯이 complete가 되기 전에는 아무 것도 발행하지 않다가 complete가 되... rxswiftreactivexOperatorsOperators 스트림을 필터링하는 연산자들 🔮 마블 다이어그램 출처: 연산자는 Observable에서 발행한 데이터를 가공하는 역할을 합니다. 기본적으로 ReactiveX의 연산자들은 순수 함수 (Pure Function)이기 때문에 Thread-Safety를 충족합니다. (순수함수란 부작용을 일으키지 않는 함수를 의미합니다. 여기서 부작용은 원본 데이터의 수정한다는 의미입니다.) Observable이 발행한 데이터들을 Filter... operatorrxswiftreactivex연산자operator RxSwift - Observable & Observer Observables 개념이란 - Observables Observable 클래스는 Rx코드 기반으로 T(제너릭)형태의 데이터를 전달 할 수 있는 이벤트 들을 비동기적으로 생성하는 기능입니다. 간단하게 말해서 다른 클래스에서 emit(방출)하는 값을 구독할수 있게 해준다는 의미 이다. Observable는 ObservableType 프로토콜을 준수한다 또한 ObsrvableType 프로토콜은... rxswiftrxswift RxSwift - Mathematical & Aggregate & Connectable Observable Operators concat 은 두개의 Observable 에서 방출되는 Event 를 결합하여 이유는 위 이미지 와 debug 를 통해 알수 있습니다. concat 연산자는 첫번째 Observable 의 생명주기가 종료된후 두번째 Observable 를 방출하여 결합합니다. 또한 두개의 subject 둘중 하나라도 onCompleted Event 가 실행되지 않는다면 observer 는 onNext Eve... rxswiftswiftrxswift Observables and Observers # 2 Observable -> Observer로 이벤트가 전달되는 시점은 Observer가 Observable을 구독하는 시점이다. Observer는 한번에 두개 이상의 이벤트를 동시에 처리하지 않는다. 따라서, Observable은 Observer가 하나의 이벤트를 처리한 후에 이어지는 이벤트를 전달한다. Observables and Observers # 1 게시물에서 Observable을 생성... rxswiftrxswift RxSwift, Observable이란? Observable은 이벤트를 전달한다. 아래는 라는 글인데, 제네릭 타입 매개변수를 연관값으로 사용하는 이벤트, 에러 및 완료 케이스 전체를 추상화해서 Event라는 공간을 만드는 것을 볼 수 있다.(실제도 이렇게 구현되어 있다) 위에서 살펴본 것처럼 Observable은 세 가지 이벤트를 비동기적으로 전달한다. 이벤트에 값(숫자나 커스텀한 인스턴스등과 같은 값을 가질 수 있고 탭과 같은 ... rxswiftrxswift Subject와 Relay 발행할 것이 미리 정해진 Observable과는 다르게 일단 구독을 하고 추후에 발행을 하는 객체가 Subject입니다. Observable Subject 누군가가 구독을 해야 발행 구독을 하지 않아도 개발자가 원하는 때에 발행 가능 각 구독자에게 따로 발행 모든 구독자에게 동시에 발행 Publish Subject 가장 기본이 되는 Subject입니다. 구독하기 전에도 발행할 수도 있지만 구... RelayrxswiftSubjectRelay [RxSwift] TableView 공부하기 (1) CoCoa TableView는 저번에 다 했으니, RxSwift에서 TableView를 사용하는 방법에 대해 알아보도록 하자 Swift Package Manager로 RxSwift/RxCocoa/RxDatasoruce 추가 ViewController를 Navigation Controller에 embed하고 스토리보드로 ViewController에 tableView와 cell(identifie... rxswiftrxdatasourcerxdatasource