Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

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 ...
Swift

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, ...
Swift

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 ...
Swift

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 ...
Swift

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 ...
Swift

Closures in Swift explained with Code Examples

Closures in Swift can be challenging to understand with types like trailing closures, capturing lists, and shorthand syntaxes. They're used throughout the standard library and are part of the basics you need to know when writing Swift code. Xcode will help us most of the time with the right syntax ...
Swift

What is a Computed Property in Swift?

Computed properties are part of a family of property types in Swift. Stored properties are the most common which save and return a stored value whereas computed ones are a bit different. A computed property, it's all in the name, computes its property upon request. It can be a valuable ...
Swift

SwiftLee 2020 In Review: Most read blog posts

Every year I'm looking back at what I achieved with SwiftLee as well as what I want to achieve in the upcoming year. I did this in , , and I'm doing the same in this blog post for 2020. 2020 is definitely not comparable to the years before due ...
Swift

Getting started with associated types in Swift Protocols

Associated types in Swift work closely together with protocols. You can literally see them as an associated type of a protocol: they are family from the moment you put them together. Obviously, it's a bit more complicated to explain how associated types work but once you get the hang of ...
Swift

Result in Swift: Getting started with Code Examples

The Result enum is available since Swift 5 and allows us to define a success and failure case. The type is useful for defining the result of a failable operation in which we want to define both the value and error output type. The standard Swift library adds more functionality ...
Swift

Constraints in Core Data Entities explained

Constraints in Core Data are part of an entity configuration. Settings like the entity name and Spotlight display name might be easy to understand while constraints are a bit less known. However, they can be super useful to maintain a unique set of data. Constraints can take away the need ...
Core DataSwift

NSManagedObject events: handling state in Core Data

An NSManagedObject lifecycle goes from insertion and updates until deletion in the end. All those events come with their own common related modifications and can be used in many different ways. Managing state in Core Data from within the NSManagedObject class itself is a great way to keep logic centralized ...
Core DataSwift