Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Intro to Rx-Swift

Intro to Rx-Swift

Introduction to Rx-Swift at MYCocoaHeads July meet-up

Avatar for Hamdullah shah

Hamdullah shah

July 18, 2016

Other Decks in Technology

Transcript

  1. var generator = [1,2,3,4,5].generate() while let elem = generator.next() {

    print(elem) } Iterator: NSNotificationCenter.defaultCenter().addObserver( self, selector: #selector(batteryLevelChanged), name: UIDeviceBatteryLevelDidChangeNotification, object: nil) Observer:
  2. Functional Programming [1, 2, 3, 4, 5, 6] .filter {

    $0 % 2 == 0 } .map { $0 * 5 } .reduce(0, combine: +)
  3. public enum Event<Element> { /// Next element is produced. case

    Next(Element) /// Sequence terminated with an error. case Error(ErrorType) /// Sequence completed successfully. case Completed } X
  4. Subscribing for Data [1, 2, 3, 4, 5, 6] .toObservable()

    .subscribeNext { print($0) } “1” “2” “3” “4” “5” “6”
  5. [1,2,3,4,5,6] .toObservable() .subscribe(onNext: { (intValue) in //pumped out int },

    onError: { (error) in //ERROR! }, onCompleted: { //There are no more signals }) { //we disposed this subscription }) Subscribing for Data, Error and Completion
  6. Create from Existing Object [1, 2, 3, 4, 5, 6]

    .toObservable() textField.rx_text .asObservable() NSURLSession.sharedSession() .rx_JSON(request) *RxCocoa
  7. Memory Management let disposeBag = DisposeBag() let gestureRecognizer = UIGestureRecognizer()

    gestureRecognizer.rx_event .subscribeNext { [weak self]_ in self?.processDetectedTap() } .addDisposableTo(disposeBag) view.addGestureRecognizer(gestureRecognizer)
  8. Creating Observables • asObservable • create • deferred • empty

    • error • toObservable (array) • interval • never • just • of • range • repeatElement • timer Filtering Observables • debounce / throttle • distinctUntilChanged • elementAt • filter • sample • skip • take • takeLast • single Transforming Observables • buffer • flatMap • flatMapFirst • flatMapLatest • map • scan • window Combining Observables • merge • startWith • switchLatest • combineLatest • zip Error Handling Operators • catch • retry • retryWhen Observable Utility Operators • delaySubscription • do / doOnNext • observeOn / observeSingleOn • subscribe • subscribeOn • timeout • using • debug Conditional and Boolean Operators • amb • skipWhile • skipUntil • takeUntil • takeWhile Mathematical and Aggregate Operators • concat • reduce / aggregate • toArray Connectable Observable Operators • multicast • publish • refCount • replay • shareReplay Operators http://rxmarbles.com