Learn to master the Combine framework with our course including practical examples in UIKit and SwiftUI. Build responsive apps with ease.
Expires Dec 10th 2024
Have you struggled to understand and learn Functional Reactive Programming? You’re not alone. RxSwift, ReactiveCocoa, and Combine can be difficult to grasp, frustrating and discouraging you. That’s why I created this course – the one I wish I had when I was starting out. My approach is different. I break down complex concepts into understandable and practical examples. I show you the theory behind it, and then demonstrate how it works in real-life situations.
By the end, you’ll not only understand but also be able to implement and apply what you’ve learned. Say goodbye to confusion and frustration, and hello to easily mastering Combine in UIKit and SwiftUI.
This course is designed with your understanding in mind. Functional reactive programming can be tricky to grasp, but don’t worry, I’ll guide you through it step by step. I use graphics and overviews to help you truly understand the concepts and how they work in practice.
I believe that in the future we will see both UIKit and SwiftUI in iOS development, often in the same project. I therefore added all sample projects in both SwiftUI and UIKit.
The course provides practical examples of how to use Combine in real-world scenarios, giving you the skills and confidence to apply what you learn to your own projects.
First, you will learn the basics of the Combine framework and functional reactive programming. I will explain how adding a subscriber like sink or assign to a publisher creates a subscription. You will learn how to cancel a subscription which means how to stop a data stream from passing values. You will also learn that passing an error 💣 will complete the data stream.
In the second section, you will learn about the different types of publishers like CurrentValueSubjects, PassthroughSubjects, Future, Just, and publishers in the Foundation framework.
The Foundation framework offers Combine extensions that allow for using publishers from commonly-used types. This simplifies the process of integrating Combine into existing codebases.
➡️ There will be 2 demo projects in this section:
The first one is a To-do app where we will use Subjects (one project with UIKit and one with SwiftUI).
The second is an app where we will use Firebase Authentication.
In the following sections, we will get to know all the operators.
A Combine operator can help you process values over time.
I will start by showing you how to combine multiple data streams together. This is interesting for complex UI where you have a lot of user interface events that you want to use to update the UI accordingly like a Sign-Up page.
Combining operators
append, merge, zip, combineLatest, share, multicast, flatmap, switchToLatest, etc
In this section, we will talk about transforming operators which you can use to change the output value of a data stream.
You will learn about mapping operators:
– how to deal with optional values
– how to pass errors in data streams (throw errors)
– type matching of Failure types
– mapping of errors
– dealing with error by using catch, tryCatch, and replaceError operators.
You will start learning about Sequence operators. These operators have special behavior. Some of them will only emit one value or only emit a value if the upstream publisher sends a completion.
You will get to know about:: first, min, max, reduce, etc.
In this section, you’ll learn how to optimize work and enhance user interaction by exploring powerful filtering operators like filter, tryFilter, dropFirst, debounce, and throttle, which allow you to efficiently process data only when necessary and respond to user changes dynamically.
I will talk about the Scheduler protocol. You already encountered a couple of operators using this protocol, like denouncing and collecting (byTimeInterval). In addition to the Scheduler protocol, I will also show you how to define time intervals for schedulers.
We also have a look at how multithreading and Combine data streams work together. This is the part I struggled to understand. You will hear a lot about how subscriptions are set up, how (in which context) they are managed, and how they pass values.
You will learn how to use receive(on) and subscribe().
The most important section. I will tell you about communication patterns and how to use Combine. You will see how useful Combine is in passing data in your app.
➡️ There will be multiple demo projects in this section both for UIKit andSwiftUI with MVVM and the Coordinator pattern
In this section, I want to introduce you to your final project. I will show you what you could implement with the JSON placeholder API. Together we will work on fetching the Album and Photo JSONs.
This is a great example to practice:
-> URLSession dataTaskPublisher
-> loading image files in lists
-> see error handling in a project
New in this section are:
-> write unit tests for Combine data streams
-> profiling with Timelane in Instruments
Most of the section is using SwiftUI. But I added a shorter video, where you can get the equivalent project in UIKit.
This course is tailored for intermediate to advanced developers with a solid Swift foundation. It’s perfect for those who have experience building small iOS apps and want to expand their skills into building large, complex applications.
This course shows examples both in UIKit and SwiftUI which takes around 30% of this course. Learning Combine for UIKit and SwiftUI will allow you to directly
You are good to go if you
This is not a beginner course! You need to have a solid understanding of the Swift programming language.
Absolutely! The course is modular, allowing you to jump into any part that interests you the most. Each section is designed to tackle real-world problems, so you can learn the necessary skills to deal with Combine.
Yes, of course. If you are not happy with my course, I will give you a full refund. You have a 30 day money-back guarantee.
Expires Dec 10th 2024
I have a Ph.D. in physicist, during which I started to love software engineering. Since I am also passionate about learning I started to build my own learning app.
I am also very enthusiastic about design, which is a bit unusual for most physicists, I am putting a strong focus on the UI part. In my courses, you will jump right into the subject and learn to design by actually designing.
From my former teaching experiences, I know that learning by trying is the most fun. So I will encourage you to use the tools I am showing you directly in your own projects. May they be small or grant.