
Learn to use RxSwift reactive extensions to write concise, maintainable iOS code that handles user interactions, network operations, data management, and dynamic content.
Prepare by using a mac with macOS Sierra and the latest Xcode, and be familiar with Swift and iOS development. The course teaches Swift through Playgrounds and iOS projects.
Access exercise files organized into chapters and per-video folders, and always open the workspace file. Build the project to load CocoaPods libraries and compare with the finished version.
Define reactive programming as handling asynchronous data sequences and show how a spreadsheet example updates C1 automatically when A1 changes, illustrating how code can react to data changes.
Reactive extensions unify patterns and operators across languages and platforms. An observable sequence emits next, error, or completed events and can be canceled with dispose or a dispose bag.
Explore how marble diagrams illustrate RxSwift operators on observable sequences, including skip, merge, and catch error, with interactive diagrams on marbles.com and open-source demos for hands-on learning in iOS.
Create and subscribe to observable sequences in RxSwift, using just, of, and from operators to emit next, error, and completed events, and manage subscriptions with a dispose bag.
Explore the four RxSwift subjects—publish, behavior, replay, and variable—and how each handles next and stop events. See use cases, the latest value handling, and access via asObservable.
Explore publish subject behavior in RxSwift, emitting only new events (no replay), using on and on next to push values, and handling completion or errors with a dispose bag.
Illustrates behavior subject replay of latest value to subscribers, with initial a, a first subscribe, and a second subscribe that sees only the most recent value, using a dispose bag.
A replay subject maintains a buffer of the specified size containing the latest events and replays those events to new subscribers in order, here showing the last three elements.
Explore variable as a wrapper around a behavior subject that replays the latest value to new subscribers and completes automatically, with dot syntax to get and set that value.
Explore traits in RxSwift, including single, completable, and maybe. Learn when to convert a raw observable sequence with as single, as completable, or as maybe.
Demonstrate using a single to read a file from resources, emitting contents as a string or an error with the create operator and disposables; compare to a deferred observable.
Learn how a Completable emits complete or error events, implement a write function that returns a Completable using the create operator, and validate writes in the shared playground data folder.
Explore the maybe trait in RxSwift, which emits an event—next, completed, or error—to represent operations that may yield a value or fail, shown by appending to or writing a file.
Explore transforming observable sequences in RxSwift using map, flatMap, and flatMapLatest, then aggregate with scan and reduce and group emissions with buffer for reactive iOS apps.
Explore filtering observable sequences with RxSwift, using the filter predicate, distinct until changed, and take while to stream prime numbers and refine search results.
Combine observable sequences in RxSwift using start with, merge, and zip to emit synchronized elements from multiple sources, with practical string and int examples.
Explore using the do on operator as a wiretap to perform side effects, then map Fahrenheit to Celsius and manage a dispose bag with schedulers.
Explore how schedulers route work to specific queues in RxSwift, using subscribe on and observe on to control where work runs, which queues handle execution, and where results are observed.
Learn how to use RxSwift schedulers to run image data processing on a background queue and display UI images on the main thread, including dispatch queue and operation queue options.
Learn how RxCocoa traits—Driver, control property, and control event—wrap observables to drive UI on the main thread, replay latest values, and emit completion events.
Learn to bind iOS UI elements with RxSwift using bind on next, drive, and map patterns to connect text fields, labels, controls, sliders, indicators, and a date picker.
Learn how to bind text field input to a variable and bind button taps to an observable using RxSwift, including publish subject usage and dismissing the keyboard.
Bind table views in iOS using RxSwift by turning data into an observable sequence and binding it with drive, while using dispose bag and modelSelected for taps.
Bind a collection view with the Data Sources library to implement an animated, sectioned data source with headers, and add sections and item moves via long presses.
Explore using forward delegates with RxSwift to mix reactive and traditional protocol methods in a table view, including forward delegate installation, dynamic cell heights, and header titles.
Discover RxSwift debugging utilities for observable sequences, including publish, connectable observables, and the debug operator, to trace multiple subscriptions and dispose effects.
Explore RxSwift's total operator counting observable allocations and enabling the trace resources flag for debugging with cocoapods. See how dispose bag and spinlock impact the total and subscriptions.
Explore error handling in RxSwift with catch error and just return, retry, and driver strategies, including on error return and on error drive with recovery sequences.
Master RxSwift testing techniques with a test scheduler, hot and cold observables, blocking, and unit tests to simplify testing of asynchronous operations in iOS.
Explore reactive networking in iOS with RxSwift, using URLSession, Alamofire, and Moya to power a typeahead GitHub repos search, bound via a view model to a table view.
Explore reactive programming with RxSwift, revisit the Swift traits videos, and leverage documentation, playgrounds, an example project, and community libraries to deepen your iOS app skills.
Developing a great app these days requires writing code that can simultaneously handle user interactions, perform network operations, manage data, present dynamic content, and more. That means writing a lot of asynchronous and concurrent code, which can be difficult to get right, and even harder to maintain.
That's where Reactive Programming, and specifically, Reactive Extensions, comes in. Reactive Extensions for Swift and iOS enable writing asynchronous and concurrent code that is succinct, easy to follow, and flexible.
Hi, I’m Scott Gardner. I’ve been developing apps in iOS since 2010, using Swift since the day it was announced, and using RxSwift, now in version 3, since before version 1. I've also authored several video courses, books, tutorials and articles, and presented at numerous conferences, meetups, and online events on Swift, RxSwift, and iOS.
In this course, I’m going to get you up to speed on the Reactive Extensions for Swift and Cocoa Touch. I’ll go from concepts to clicks as I show you how to effectively use reactive extensions in your iOS app projects.