Conditional View Modifier creation in SwiftUI allows you only to apply modifiers if a certain condition is true. Whether it’s a simple checkbox value or an OS availability check, there are many cases in which you want to apply different configurations to your views. A View Modifier in SwiftUI modifies the View with given configurations. …
Getting started with the Combine framework in Swift
Combine was introduced as a new framework by Apple at WWDC 2019. The framework provides a declarative Swift API for processing values over time and can be seen as a 1st party alternative to popular frameworks like RxSwift and ReactiveSwift. If you’ve been trying out SwiftUI, you’ve likely been using Combine quite a lot already. …
How to test optionals in Swift with XCTest
Optionals types in Swift either have a value or not, and there are several ways to test optionals using the XCTest framework. APIs like XCTUnwrap are designed to unwrap an optional and throw an error if unwrapping failed. However, it can easily lead to writing many unwraps before evaluating the actual outcome you want to …
How to use the rethrows keyword in Swift
Rethrows in Swift allows forwarding a thrown error by a given function parameter. It’s used a lot in methods like map, filter, and forEach and helps the compiler to determine whether or not a try prefix is needed. In my experience, you don’t have to write rethrowing methods that often. However, once you know how …
How to use @autoclosure in Swift to improve performance
@autoclosure in Swift is a type of closure that allows to omit braces and make it look like a normal expression. Under the hood, however, it’s still a closure. By understanding what this means, we can improve the efficiency of our code. The @autoclosure keyword might be new to you. For many of us, it’s …
How to create a Dynamic Pager View for onboardings
A pager view in SwiftUI like we know UIPageViewController in UIKit didn’t exist until iOS 14 and macOS 11.0. Using the PageTabViewStyle on a TabView will result in a swipeable set of pages. However, what if you want to support iOS 13? And how would you do something similar on macOS Catalina? On top of …
How and when to use Lazy Collections in Swift
Lazy collections are similar to a regular collection but change the way how modifiers like map, filter, and reduce are processed. In my experience, they haven’t got as much attention as they should as they can be more performant in certain cases. You might be more familiar with lazy vars, but have you used the …
How to use Variadic parameters in Swift
Variadic parameters make it possible to pass zero or more values of a specific type into a function. It can be a clean alternative for methods that often work with one element, and you don’t want to create an array of components for just a single value on the implementation level. The great thing about …
XCTExpectFailure: Expected test failures explained with code examples
XCTExpectFailure was introduced in Xcode 12.5 and allows marking test failures as expected. The first time I read about this new API I was kind of confused: why wouldn’t we use methods like XCTAssertThrowsError instead? I continued my journey and quickly realised this API is a welcome addition to the XCTest framework. In fact, it …
Lazy var in Swift explained with code examples
A lazy var is a property whose initial value is not calculated until the first time it’s called. It’s part of a family of properties in which we have constant properties, computed properties, and mutable properties. A lazy property might be lesser known to beginners in Swift but are actually super valuable once you know …