A brand new Xcode refactoring engine was introduced in Xcode 9. Although this is quite a few Xcode versions ago it is still a quite unknown functionality for a lot of us. You might have read my blog post on command-click options but do you know how to extract methods or variables? The Xcode refactoring …
Unused images and resources clean up in Xcode
Unused images can exist as a result of iterations in a project. Once a feature is no longer needed and remove, it’s not always cleaned up completely. Therefore, it’s useful to know how to clean up your Xcode assets. Just like in my blog post on cleaning up unused localized strings, I’ll go over a …
UIKeyCommand how-to add keyboard shortcuts & speed up your workflow

The UIKeyCommand class allows you to add keyboard shortcuts to your app. Although they might seem useful for iPad only, there are reasons to add this to your iPhone app as well. They’re easy to set up and they work in the simulator! After I wrote Shortcuts essentials in Xcode to speed up your workflow …
Combine debugging using operators in Swift

Combine debugging can be hard with long stack traces which don’t help at all. Asynchronous callbacks follow up on each other rapidly and easily make it hard to find the root cause of an issue. It’s next to the big learning curve one of the most common reasons to not go for reactive programming in …
Creating a custom Combine Publisher to extend UIKit
A Custom Combine Publisher can add missing functionalities to UIKit elements you use every day. A lot of boilerplate code can be removed and implementations can be simplified. A simple example is responding to UIControl events. The standard library comes with a few great extensions to, for example, decode JSON easily and assign values to key …
Using Xcode Previews with existing UIKit views without using SwiftUI
Xcode Previews have been added in Xcode 11 and allow you to quickly preview the current state of your view. Although you might think that you need to use SwiftUI to make use of this great new feature, it’s not true! Whether you’re working with a custom UIView or with a custom UIViewController, they both …
Dynamic Member Lookup combined with key paths in Swift
Dynamic member lookup has been introduced in Swift 4.2 with SE-195 and already allowed some pretty nice solutions to for example implement JSON parsing. Just like the @propertyWrapper keyword as discussed in last weeks blog post, it can be used with a @ keyword: @dynamicMemberLookup. As quoted from the proposal, dynamic member lookup has been added …
Using NSBatchDeleteRequest to delete batches in Core Data
An NSBatchDeleteRequest can be used to efficiently delete a batch of entries from a Core Data SQLite persistent store. It runs faster than deleting Core Data entities yourself on a managed object context as they operate at the SQL level in the persistent store itself. Its usage, however, is a bit less simple compared to the …
Weak self and unowned self explained in Swift
Weak self and unowned self in Swift for many of us are hard to understand. Although Automatic Reference Counting (ARC) solved a lot for us already, we still need to manage references when we’re not working with value types. When writing Swift code we often run into situation while writing things like closures. Those situations …
Typealias usage in Swift
A typealias in Swift is literally an alias for an existing type. Simple, isn’t it? They can be useful in making your code a bit more readable. By using them in a smart way they can be really useful in your codebase. Declaring a typealias A typealias can be declared in Swift using the typealias …