Unraveling Swift Result Builders

In Swift 5.4, a powerful new feature was introduced that revolutionized how we can work with composable pieces of code: Result Builders. If you’ve written any SwiftUI code, you’ve probably already encountered this feature without realizing it. Result Builders underpin much of the magic that makes SwiftUI’s declarative syntax possible. However, their use isn’t limited to SwiftUI. In this blog post, we’re going to delve into Result Builders, what they are, and how you can use them to build more expressive and powerful APIs....

June 11, 2023 · Mike Gopsill ·  Swift

Examples of Swift Property Wrappers

Swift’s property wrappers are a powerful tool that allows developers to change how properties are stored and manipulated while keeping their interfaces clean and consistent. This post will discuss some practical use cases for property wrappers. Let’s get started! 1. UserDefault Wrapper UserDefaults is a straightforward mechanism to store small amounts of data persistently. We can simplify UserDefaults interactions with a UserDefault property wrapper: @propertyWrapper struct UserDefault<T> { let key: String let defaultValue: T init(_ key: String, defaultValue: T) { self....

June 2, 2023 · Mike Gopsill ·  Swift

Swift Property Wrappers

Property Wrappers were introduced to Swift in 5.1. Initially, they can seem a bit mystifying. However, they’re a powerful tool, helping to streamline your code and make it more expressive. Today, we’ll demystify Property Wrappers and learn how to use them in Swift. What Exactly is a Property Wrapper? Think of a Property Wrapper as a special kind of structure, class, or enumeration that “wraps” around a property in your code....

June 1, 2023 · Mike Gopsill ·  Swift

Understanding Modularisation and Dependencies in iOS and Swift

As software projects grow, so does their complexity. Managing this complexity is one of the most critical aspects of software development. One way of handling this complexity is through the principle of modularisation. In this post, we’ll delve deeper into the concept of modularisation and its counterpart, dependencies, in the context of iOS development with Swift. Modularisation in iOS In its essence, modularisation is the process of dividing a software system into separate, independent modules....

The Power of UIAppearance - Styling iOS Apps

UIAppearance is an underappreciated gem in UIKit’s toolbox. It provides an elegant way to style UI elements globally across your app, thereby keeping your codebase DRY (Don’t Repeat Yourself) and maintainable. In this post, we’ll dive into UIAppearance and learn how to harness its power to style our iOS apps effectively. What is UIAppearance? UIAppearance is a protocol in UIKit that allows you to customize the appearance of all instances of a class....

May 28, 2023 · Mike Gopsill ·  UIKit

Understanding Task and Child Task in Swift's Structured Concurrency

In the realm of programming, the ability to handle concurrent tasks is vital to creating applications that are both performant and user-friendly. The introduction of Swift’s Structured Concurrency has revolutionised the way developers handle async operations. This post will delve into the intricacies of tasks and child tasks in Swift’s Structured Concurrency and provide a comprehensive understanding of their uses. The Power of Tasks In Swift’s Structured Concurrency model, tasks are the building blocks of asynchronous operations....