일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스위프트
- HIG
- swiftUI
- ios
- RxCocoa
- combine
- 리펙토링
- clean architecture
- Xcode
- 리팩토링
- swift documentation
- Observable
- UICollectionView
- 클린 코드
- MVVM
- ribs
- 리펙터링
- map
- Human interface guide
- collectionview
- rxswift
- Clean Code
- Refactoring
- Protocol
- tableView
- 애니메이션
- SWIFT
- uitableview
- uiscrollview
- UITextView
- Today
- Total
목록RxSwift (40)
김종권의 iOS 앱 개발 알아가기
1. URL API REQ 1) map을 이용하여 원소에 접근하여 최종적으로 URLRequest획득 // viewDidLoad().swoft DispatchQueue.global(qos: .default).async { [weak self] in let response = Observable.from([repo]) .map { urlString -> URL in return URL(string: "https://api.github.com/repos/\(urlString)/events")! }.map { url -> URLRequest in return URLRequest(url: url) } } 2) flatMap을 이용하여 새로운 Observable생성 *map이 아닌 flatMap을 사용하는 이유 -..
1. Transforming elements 1) toArray - 개별 원소들 -> 하나의 배열로 example(of: "toArray") { let disposeBag = DisposeBag() Observable.of("A", "B", "C") .toArray() .subscribe(onNext: { print($0) }) .disposed(by: disposeBag) } // prints : ["A", "B", "C"] 2) map 이벤트를 mapping하여 주어진 식을 통해 새로 변경 example(of: "map") { let disposeBag = DisposeBag() // 1 let formatter = NumberFormatter() formatter.numberStyle = .spel..
1. 구독을 공유해서 사용하는 방법 (Sharing subscriptions) 구독을 공유하는 주체 : Observable 1) 공유해서 사용하지 않은 경우의 문제점 여러 곳에서 subscribe()를 사용한다면 동기화에 문제 발생 var start = 0 func getStartNumber() -> Int { start += 1 return start } let numbers = Observable.create { observer in let start = self.getStartNumber() observer.onNext(start) observer.onNext(start+1) observer.onNext(start+2) observer.onCompleted() return Disposables.cr..
구독 요청시, filtering하는 연산자를 넣어서 이벤트(onNext)들을 filter하여 선택적인 emit을 하기위한 연산자 1. Ignoring operators 1) ignoreElements() - next이벤트 금지 필터 (completed, error는 사용가능) /// ignoreElements example(of: "ignoreElements") { // 1 let strikes = PublishSubject() let disposeBag = DisposeBag() // 2 strikes .ignoreElements() .subscribe { _ in print("You're out!") } .disposed(by: disposeBag) strikes.onNext("X") // print..
* 실습할 프로젝트의 내용은 여기를 참조하여 다운로드 네비게이션 버튼 중 "+"버튼을 통해 이미지를 추가하며, save버튼을 추가 할 수 있도록 하는 것 RxSwift접근(BehaviorRelay와 PublishSubject이용)하여 구현해야될 내용 - "+"버튼을 누를 시 앨범으로 이동하는 기능, 선택시 뷰에 반영 - save버튼은 이미지가 있는 경우만 활성화 - 이미지를 선택할 때마다, 네비게이션 아이템 타이틀에 현재 입력한 총 이미지 갯수 표현 - save버튼을 누르면 저장되게끔 1. dispose bag view controller이 dispose bag을 소유하고 있기 때문에, dispose의 ARC가 0이 될때, observable subscription들은 같이 disposed됨 (Rx su..
1. Subjects란? (실제 앱 구동시) run time시에 Observable에 값을 추가하여 emit이 발생하게끔 해주는 대리인 Observable에 값을 추가하는 대상은 Observer라 부르며(추상적인 개념), Observable과 Observer 기능을 둘 다 하는 것이 바로 Subjects.( subscriber가 아님을 주의) ex) PublishSubjects는 일종의 출판사와 같은 작업 -> 출판사에서 "Is Anyone Listening?"이란 내용 받음(.onNext) -> 구독(.subscribe) -> 현재 벌어진 일만 emit함(.subscribe했을 경우 "Is anyone listening?"은 과거에 발생했던 일이라 emit하지 않음) -> 뒤에 1과 2 이벤트 추가시(..
1. Observables관련 용어 및 기능 * Observable이란 여러 이벤트들을 생성(="emit")할 수 있는 대상 * sequence 란? * Observable == Observable sequence == sequence "observable"을 "sequence"라고 부르는 이유? 1) next : 구성요소를 계속해서 방출시킬 수 있는 기능 (=observable구독자에게 데이터 전달) 2) completed : 이벤트를 종료시킬 수 있는 기능 (=observable구독자에게 완료되었음을 알림) - 그림에서 끝에 막대기가 세로로 있는 것(이미 일이 끝난 상태) 3) error : 이벤트에 오류가 있음을 알고 중간에 종료시킬 수 있는 기능(observable구독자에게 오류를 알림) - 이벤..
1. RxSwift란? ‘RxSwift is a library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers.’ By Marin Todorov. ‘RxSwift - Reactive Programming with Swift.’ Apple Books. - RxSwift(Reactive eXtension Swift)란 관찰 가능한 연속성(순차적)형태와 함수형태의 연산자를 이용해서 비동기&이벤트를 위한 코드로 구성하고 있는 라이브러리(또한 스케줄러를 통해 parameter..