Debugging breakpoints in Xcode allows you to replace prints and reuse debugging statements in future debugging sessions. By simply enabling and disabling needed breakpoints you can also get rid of debug levels as often defined in libraries like CocoaLumberjack. Inspired by @twostraws’s debugging presentation at @AppdevconNL I now keep around breakpoints instead of print …
Typed notifications using custom extensions
The Swift API contains a lot of notifications sent out by the system like NSManagedObjectContextObjectsDidChange in Core Data or the AppDelegate events like UIApplicationDidBecomeActive. Some of these notifications contain rich data in their user info dictionary. Reading the user info data using typed notifications can clean up your code, especially if you use these notifications …
Core Data Debugging in Xcode using launch arguments
Core Data is Apple’s object graph management and persistency framework for iOS, macOS, watchOS, and tvOS. It’s around for a long time and therefore a great solution to use for persistent storage of structured data in your application. Core Data Debugging might be a bit hard, although some less-known functionalities in Xcode can help you …
Using Xcode custom file templates with GIT
Xcode custom file templates are a great way to develop just a bit faster and enable you to define a base template with all repetitive work included. Combining it with GIT enables you to share these files in your team and let them benefit as well. Creating a GIT repository for Xcode custom file templates …
Useful less known Xcode tips to improve your workflow
Xcode is the main IDE for developing software for macOS, iOS, watchOS, and tvOS. It contains a lot of well-known features like Open Quickly (⇧ + ⌘ + O), the assistant editor and handy shortcuts like ⌘ + U to run tests quickly. Some other features are less known but just as useful and these …
App Store Optimization for your App Store Page

App Store Optimization can help people discover your app on the App Store for iPhone and iPad. With some useful tips, you can easily optimize yours. During a WWDC App Store lab feedback session, I’ve gathered some really useful tips on our WeTransfer app. Title, subtitle and promotional text These are one of the most …
Enabling newly added opt-in features in Xcode 10
During WWDC 2018 Apple announced Xcode 10 with a lot of new features. Many of them are available for you automatically and enabled by default, but some of them might not show up and need some manual adjustments. Code folding To enable it, open preferences under Text Editing > Editing and select Code folding ribbon. …
Printing data requests using a custom URLProtocol
Almost all apps contain some kind of data requests. Printing data requests could sometimes be handy for debugging purposes. This can be done fairly easy by using a custom URLProtocol. Creating a custom URLProtocol A custom URLProtocol is needed to print out the data requests. A custom implementation of URLProtocol including the canInit method is …
Controlling Progress children by adding remove

Controlling Progress children by default makes it only easy to add children to a Progress instance, but removing is not possible by default. This could have been useful when you want to use a single Progress instance which can have different children over time. Using a custom class MutableProgress makes this possible. Controlling Progress children …
Share Extension UI Tests written in Swift

UI Tests are a great tool to validate your application. It is easy to create them for your main application, but it might be harder to create a UI test for your share extension. This can be just as easy as your main application with some simple steps. UI Test steps A UI test for …