Learn more about Advent of Swift

Getting ready to publish your app on the App Store

Updated on: January 6, 2020

You’ve done all the work to build your app, your UI looks amazing, animations are smooth and you’re ready to put your app in the hands of other people. Maybe you’re even ready to start offering your app on the App Store! This is a huge achievement if you are currently at this stage in […]

Read post

Dependency injection with Storyboards and Xcode 11

Updated on: February 10, 2020

For years I have had a bit of a love and hate relationship with Storyboards. I love how easy they make it for me to set up my AutoLayout constraints, but they can quickly grow unwieldy and for large projects with multiple developers Storyboards are hard to use because of merge conflicts that occur when […]

Read post

Using compositional collection view layouts in iOS 13

Published on: December 22, 2019

Ever since iOS 6, developers have been able to use collection views and to build interesting custom layouts by subclassing the UICollectionViewLayout or UICollectionViewFlowLayout classes. I even wrote an article about building custom collection view layouts a while ago. Today, I would like to introduce you to a new way of defining collection view layouts […]

Read post

Modern table views with diffable data sources

Updated on: September 22, 2023

At WWDC 2019 Apple announced a couple of really cool features for table views and collection views. One of these cool features comes in the form of UITableViewDiffableDataSource and its counterpart UICollectionViewDiffableDataSource. These new diffable data source classes allow us to define data sources for collection- and table views in terms of snapshots that represent […]

Read post

Fetching and displaying data from the network

Updated on: February 10, 2020

One of the topics that I could write dozens of posts on is networking. Making calls to a remote API to retrieve or persist data is something that is a key feature in many apps that are currently in the App Store. Some apps make extensive use of the network while others only need the […]

Read post

Installing multiple Xcode versions with xcversion

Updated on: February 10, 2020

As a developer that uses Xcode on a daily basis for multiple projects, you sometimes need to use different versions of Xcode depending on the project you’re working on. Or maybe you want to try out the latest Xcode beta, for example right after Apple announced it after WWDC. One way to manage is to […]

Read post

Loose coupling and the law of Demeter

Published on: December 17, 2019

When you’re designing a new component for your codebase, you will usually only think of the component itself, and the objects that it interacts with directly. If you’re designing a component that authenticates a user, you will typically only consider objects directly related to the authentication flow. You’ll take into account that there’s probably a […]

Read post

Sequencing tasks with DispatchGroup

Published on: December 16, 2019

When you’re building apps, there are times when you need to perform certain tasks before executing the next task. Imagine a scenario where you need to make a couple of API calls to a webserver to retrieve information before you can begin processing the information that’s fetched by all preceding API calls, so it can […]

Read post

Breaking an app up into modules

Published on: December 15, 2019

As apps grow larger and larger, their complexity tends to increase too. And quite often, the problems you’re solving become more specific and niche over time as well. If you’re working on an app like this, it’s likely that at some point, you will notice that there are parts of your app that you know […]

Read post

Expand your learning with my books

Practical Combine header image

Learn everything you need to know about Combine and how you can use it in your projects with Practical Combine. It contains:

  • Thirteen chapters worth of content.
  • Playgrounds and sample projects that use the code shown in the chapters.
  • Free updates for future iOS versions.

The book is available as a digital download for just $39.99!

Learn more