Handling errors in Swift is done using a mechanism where functions specify their ability to throw errors. In modern Swift versions (6.0 and up), functions can even specify the type of the error that the function might throw. When we call a function that can throw, we use special syntax to either ignore the error […]
Read post
Subscribe to my newsletter and never miss a post
Recent articles
Jump to a random postAdding default values to subscript arguments in Swift 5.2
Published on: February 19, 2020The ability to define custom subscripts in Swift is really powerful. It allows us to write very natural and concise code. Consider the following example of a Grid with a custom subscript: struct Grid { let items : [[GridItem]] subscript(x x: Int, y y: Int) -> GridItem? { guard !items.isEmpty, (items.startIndex…items.index(before: items.endIndex)).contains(x) else { return […]
Read postHow and when to use callAsFunction in Swift 5.2
Published on: February 17, 2020A new Swift 5.2 feature is the ability to call instances of types as functions. Or, as the Swift Evolution proposal calls it “Callable values of user-defined nominal types”. The very short description of this feature is that it allows you to call instances of any type that has a callAsFunction method implemented as if […]
Read postFor years we’ve had to resort to using physical devices when testing push notifications. With Xcode 11.4, Apple finally gives developers the tools needed to test push notifications on the iOS Simulator. I’m going to assume you already know how to add push notifications to your app. If you’ve never added push notifications to an […]
Read postSo far in my Combine series I have mostly focussed on showing you how to use Combine using its built-in mechanisms. I’ve shown you how Combine’s publishers and subscribers work, how you can use Combine for networking, to drive UI updates and how you can transform a Combine publisher’s output. Knowing how to do all […]
Read postFive ways to get better at receiving feedback
Published on: February 5, 2020When I just started my career as a developer there was a lot I didn’t know yet. There also were a lot of things I didn’t understand or had never done before. I have always been lucky enough to work in places where I was able to learn and grow as needed, and most importantly, […]
Read postUsing map, flatMap and compactMap in Combine
Published on: February 3, 2020Oftentimes when you’re working with Combine, you’ll have publishers that produce a certain output. Sometimes this output is exactly what you need, but often the values that are output by a publisher need to be transformed or manipulated somehow before they are useful to their subscribers. The ability to do this is a huge part […]
Read postUpdating UI with assign(to:on:) in Combine
Published on: January 29, 2020So far in my series of posts about Combine, we have focussed on processing values and publishing them. In all of these posts, I used the sink method to subscribe to publishers and to handle their results. Today I would like to show you a different kind of built-in subscriber; assign(to:on:). This subscriber is perfect […]
Read postPublishing property changes in Combine
Published on: January 27, 2020In Combine, everything is considered a stream of values that are emitted over time. This means that sometimes a publisher can publish many values, and other times it publishes only a single value. And other times it errors and publishes no values at all. When your UI has to respond to changing data, or if […]
Read postWhen you perform a URL Request in your app, you typically configure the request in your code and when it’s all set up you pass it off to a URLSession data task, and the request should succeed if everything goes as expected. When the request is misconfigured, the server will hopefully return a useful error […]
Read postExpand your learning with my books

Learn everything you need to know about Core Data and how you can use it in your projects with Practical Core Data. It contains:
- Twelve chapters worth of content.
- Sample projects for both SwiftUI and UIKit.
- Free updates for future iOS versions.
The book is available as a digital download for just $39.99!
Learn more