Combine in the App

Take a look at how Combine is used to power parts of the open-source app based on changes that get stored in User Defaults. By Jessy Catterwaul.

Leave a rating/review
Save for later

Who is this for?

Intermediate to Advanced iOS developers with some experience using SwiftUI and User Defaults, but not necessarily any Combine experience.

Check out the open source code for the app here.

Covered concepts

  • Combine
  • Publishers and Subscribers
  • Observable Objects
  • Passthrough Subjects
  • Type Erasure
  • Storing Cancellables
Toggle description

User settings for the app are stored in User Defaults. To publish changes from them, an ObservableObject, PassthroughSubjects, and AnyPublishers are employed.

Unit Tests 1:54
Toggle description

GRDB, which the app uses for data storage, relies on the CombineExpectations library. SettingsManagerTestCase makes use of its Recorders as well.

Toggle description

Any Cancellable (which the sink method returns) is a type-erased, Hashable class that you'll be using a lot with Combine.

Toggle description

ObservableObjects make use of a publisher, named objectWillChange, which doesn't send any data, and can't fail.

Published 1:48
Toggle description

Published is a property wrapper which automatically adds a publisher that emits new values. It can be cleaner than calling objectWillChange.