프로그래밍/Swift
-
[RxSwift] Operators (scan, window)프로그래밍/Swift 2021. 4. 16. 23:52
1. scan 직전에 내려보낸 데이터와 현재 stream(위)에 있는 데이터 이렇게 2개 데이터를 특정한 연산을 하고 내려보냄. 예를들면 위의 stream에서 1은 내려보낸 것이 없어 그대로 내려가서 1이되고, 1 다음에 있는 2는 직전에 내려보낸 1과 연산(1+2)하여 3이 되고, 이것을 내려보낸다. reduce와 비슷한 것 같지만 reduce는 한개의 원소만 최종적으로 내려보내는 것이고(다르기도하고 operator reduce가 따로 존재하기도 함) scan은 한개씩 내려보내면서 직전에 내려보낸 것과 상호작용을 함. 사용예시 class MenuListViewModel { // var totalPrice: Observable = Observable.just(10_000) var totalPrice: P..
-
[RxSwift] subject프로그래밍/Swift 2021. 4. 16. 22:18
1. BehaviorSubject subscribe하면, 디폴트값(핑크색 값)이 내려온다. 그리고 계속해서 데이터가 발생하면 바로바로 내려온다. 그러다가 두번째 subscribe가 발생하면, 마지막값(초록색)을 내려주고, 마찬가지로 계속해서 데이터가 발생할때마다 내려온다. 도중에 subscribe를 했으니 맨위에 있는 것은 observable이다. Observable.just, Observable.from 이런것으로 만들어진 observable은 이미 생성할 때 데이터를 전부 가지고 있을 때의 경우인데, 여기서 쓰인 observable은 생성할 때 꼭 전체 데이터를 가지고 있어야 하는 것이 아닌, 나중에 데이터를 추가해서 넣어줄 수 있는 유형의 observable이다. 만일 도중에 에러(그림상에서 X에 ..
-
[RxSwift] subscribe, next, error, completed프로그래밍/Swift 2021. 4. 15. 19:06
1. subscribe 여러가지 처리하고 만들어진 Observable 데이터를 받아서 사용할 때 쓰는 키워드. Observable = 나중에 생기는 데이터, subscribe = 나중에 생기는 데이터를 꺼내 쓰는것. subscribe의 return타입은 disposable임. 다른 operator들은 return타입이 전부 stream임(Observable) DisposeBag에 여러 dispose한 것들을 담을 수 있지만 disposeBag.disposed()라는 메서드를 호출 할 수는 없음. 그래서 disposeBag 변수에 새로운 disposBag를 생성하는 것으로 disposed() 를 하게함. subscribe의 반환타입이 disposable이기 때문에, 보통사용할 때 외부의 변수로 생성한 di..
-
[RxSwift] Operators (just, from, map, filter)프로그래밍/Swift 2021. 4. 15. 17:07
1. just : 넣어주면 그대로 한번에 다음번으로 전달 생성 연산자. 빨간색 구슬은 데이터. 아래 화살표는 스트림. 스트림에 세로로 막대기가 있는것은 데이터가 끝남을 의미 (complete) --> disposableBag에서 사라짐. func just1() { Observable.just("Hello") .subscribe(onNext: { s in print(s) // Hello }) .disposed(by: disposeBag) } func just2() { Observable.just([1,2,3]) .subscribe(onNext: { arr in print(arr) // [1,2,3] }) .disposed(by: disposeBag) } func downloadJson1(_ url: Str..