When 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 post
Subscribe to my newsletter and never miss a post
Recent articles
Jump to a random postThis post is a short demo of using Swift’s sort() and sort(by:) methods. For a more comprehensive overview of sorting, and some background information on how Swift’s sorting works I recommend you take a look at this updated post The easiest way to sort an Array in Swift is to use the sort method. This […]
Read postIn the past two weeks I have introduced you to Combine and I’ve shown you in detail how Publishers and Subscribers work in Combine. This week I want to take a more practical route and explore Combine in a real-world setting. A while ago, I published a post that explained how you can architect and […]
Read postYou can use Array’s insert(_:at:) method to insert a new element at the start, or any other arbitrary position of an Array: var array = ["world"] array.insert("hello", at: 0) // array is now ["hello", "world"] Make sure that the position that you pass to the at: argument isn’t larger than the array’s current last index […]
Read postDates in Swift can be compared to each other. This allows you to check whether one date comes before or after another date: if dateOne > dateTwo { print("dateOne comes after dateTwo") } else if dateOne < dateTwo { print("dateOne comes before dateTwo") } else if dateOne == dateTwo { print("dateOne is equal to dateTwo") […]
Read postTips to ask better questions
Published on: January 15, 2020As developers, we all get stuck sometimes. When this happens we start searching for solutions on Google, or we ask questions on Stackoverflow, on the Swift forums, the iOS Developers Slack community or other places. Over the past couple of years, I have been actively trying to help people solve problems they were stuck on […]
Read postUnderstanding Combine’s publishers and subscribers
Published on: January 13, 2020In my previous post about Combine, I introduced you to Functional Reactive Programming (FRP) and I’ve shown you can subscribe to Combine publishers using the sink(receiveCompletion:receiveValue:) method. I also showed you how you can transform the output of publishers using some of its built-in functions like map and collect. This week I want to focus […]
Read postArrays in Swift are powerful and they come with many built-in capabilities. One of these capabilities is the ability to remove objects. If you want to remove a single, specific object from an Array and you know its index, you can use remove(at:) to delete that object: var array = [1, 2, 3] array.remove(at: 0) […]
Read postWhen you have an Array of elements, and you want to drop all elements that don’t match specific criteria from the Array, you’re looking for Array’s filter(isIncluded:) method. Let’s say you have an array of words and you only want to keep the words that are longer than three characters: let words = ["hello", "world", […]
Read postWe all write the dreaded // TODO: and // FIXME: comments every once in a while. Sometimes we do it because we know our code can be better but we’re not sure how, other times we don’t have the time to write an optimal solution because of deadlines, and other times we just want to […]
Read postExpand your learning with my books

Learn everything you need to know about Swift Concurrency and how you can use it in your projects with Practical Swift Concurrency. It contains:
- Eleven chapters worth of content.
- 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