Give your simulator superpowers

Give your Xcode
Simulator extra features

Recent Xcode, iOS and Swift Blog posts

Some keyword in Swift: Opaque types explained with code examples

The some keyword in Swift declares opaque types, and Swift 5.1 introduced it with support for opaque result types. Many ...
Read More
/ Swift

Using NavigationLink programmatically based on binding in SwiftUI

NavigationLink in SwiftUI allows pushing a new destination view on a navigation controller. You can use NavigationLink in a list ...
Read More
/ SwiftUI

App Icon Generator is no longer needed with Xcode 14

An App Icon Generator generates all required app icon sizes based on a single-size icon input file. Creating and dragging ...
Read More
/ OptimizationXcode

Increase App Ratings by using SKStoreReviewController

SKStoreReviewController allows asking your users for App Store ratings from within the app. Positive ratings can help your app stand ...
Read More
/ OptimizationSwift

Markdown rendering using Text in SwiftUI

SwiftUI comes with built-in markdown support for text, making it easy to transform the text into bold, italic, and other ...
Read More
/ SwiftUI

RocketSim 8.0: Enhance your iOS Simulator

RocketSim is a developer tool that gives your iOS Simulator extra functionalities to increase day-to-day development productivity. Floating windows become ...
Read More
/ Xcode

Memory leaks prevention using an autoreleasepool in unit tests

Memory leaks often happen without notice. Although best practices like using a weak reference to self inside closures help a ...
Read More
/ Swift

AsyncSequence explained with Code Examples

AsyncSequence is part of the concurrency framework and the SE-298 proposal. Its name implies it's a type providing asynchronous, sequential, ...
Read More
/ ConcurrencySwift

AsyncThrowingStream and AsyncStream explained with code examples

AsyncThrowingStream and AsyncStream are part of the concurrency framework introduced in Swift 5.5 due to SE-314. Async streams allow you ...
Read More
/ ConcurrencySwift

Downloading and Caching images in SwiftUI

Downloading and caching images is an essential part of building apps in Swift. There are several ways of downloading images ...
Read More
/ SwiftUI

Using MetricKit to monitor user data like launch times

The MetricKit framework allows us to collect all kinds of data from our end users, including launch times and hang ...
Read More
/ Swift

Disable animations on a specific view in SwiftUI using transactions

Animations in SwiftUI look great and make your app shine, but sometimes you want to disable animations on a specific ...
Read More
/ SwiftUI

Error alert presenting in SwiftUI simplified

Presenting error alerts in apps is essential to communicate failures to your end-users. The happy flow of apps is often ...
Read More
/ SwiftUI

AnyObject, Any, and any: When to use which?

AnyObject and Any got a new option any as introduced in SE-355, making it harder for us developers to know ...
Read More
/ Swift

How to use the #available attribute in Swift

Marking pieces of code as available or unavailable per platform or version is required in the ever-changing landscape of app ...
Read More
/ Swift

@Published risks and usage explained with code examples

@Published is one of the property wrappers in SwiftUI that allows us to trigger a view redraw whenever changes occur ...
Read More
/ CombineSwiftUI

@StateObject vs. @ObservedObject: The differences explained

The @StateObject and @ObservedObject property wrappers tell a SwiftUI view to update in response to changes from an observed object ...
Read More
/ SwiftUI

How to use the Redacted View Modifier in SwiftUI with useful extensions

The redacted view modifier in SwiftUI allows us to create a so-called skeleton view while our data is loading. Using ...
Read More
/ SwiftUI

Debugging SwiftUI views: what caused that change?

Debugging SwiftUI views is an essential skill to own when writing dynamic views with several redrawing triggers. Property wrappers like ...
Read More
/ DebuggingSwiftUI

@EnvironmentObject explained for sharing data between views in SwiftUI

@EnvironmentObject is part of the family of SwiftUI Property Wrappers that can make working with SwiftUI views a little easier ...
Read More
/ SwiftUI

Self-documenting code in Swift to increase readability

Self-documenting code helps explain a piece of code to other developers on a project without the need for actual documentation ...
Read More
/ Swift

Tasks in Swift explained with code examples

Tasks in Swift are part of the concurrency framework introduced at WWDC 2021. A task allows us to create a ...
Read More
/ ConcurrencySwift

Guard statements in Swift explained with code examples

Guard statements in Swift allow us to implement checks into our code that prevents the current scope from continuing. When ...
Read More
/ Swift

Writing Swift Articles: Tips to become a better writer

Writing Swift articles is a great way to become a better engineer and is often seen as a required skill ...
Read More
/ Optimization

Swift in 2021: A Year in Review

One of the best years for Swift is close to reaching its end. Time flies when you're having fun, and ...
Read More
/ General

Reflection in Swift: How Mirror works

Reflection in Swift allows us to use the Mirror API to inspect and manipulate arbitrary values at runtime. Even though ...
Read More
/ Swift

RunLoop.main vs DispatchQueue.main: The differences explained

RunLoop.main and DispatchQueue.main are often used as schedulers within Combine. During code reviews, I often encounter inconsistency in using one ...
Read More
/ Combine

Creating an App Update Notifier using Combine and async/await

An app update-notifier promotes a new app update to your users. Using a notifier will get better adoption rates with ...
Read More
/ Swift

Non-fatal errors vs fatal crashes: The differences explained

Non-fatal errors happen in every application that's developed and have a close relationship with fatal errors. Most of us know ...
Read More
/ Optimization

Composition vs. Inheritance: code architecture solutions explained in Swift

Composition and inheritance are both fundamental programming techniques when working in object-oriented programming languages. You've likely been using both patterns ...
Read More
/ Swift

Property Wrappers in Swift explained with code examples

Property Wrappers in Swift allow you to extract common logic in a distinct wrapper object. This new technique appeared at ...
Read More
/ Swift

Async await in Swift explained with code examples

Async await is part of the new structured concurrency changes that arrived in Swift 5.5 during WWDC 2021. Concurrency in ...
Read More
/ ConcurrencySwift

Increasing development effectiveness by recognizing repetition

Development effectiveness determines how fast and efficient you can work as an engineer. The more efficient you can make your ...
Read More
/ Optimization

Sendable and @Sendable closures explained with code examples

Sendable and @Sendable are part of the concurrency changes that arrived in Swift 5.5 and address a challenging problem of ...
Read More
/ ConcurrencySwift

Presentation tips for performing professional Swift talks

Presentation tips can help you perform professional Swift talks by making sure you're well prepared and professional-looking. Last week, I ...
Read More
/ Optimization

Nonisolated and isolated keywords: Understanding Actor isolation

SE-313 introduced the nonisolated and isolated keywords as part of adding actor isolation control. Actors are a new way of ...
Read More
/ ConcurrencySwift

EXC_BAD_ACCESS crash error: Understanding and solving it

Building apps all goes well in the beginning. You're developing an app from scratch; it's stable and runs perfectly fine ...
Read More
/ Swift

Race condition vs. Data Race: the differences explained

Race conditions and data races are similar but have a few significant differences you should know. Both terms are often ...
Read More
/ Swift

Thread Sanitizer explained: Data Races in Swift

The Thread Sanitizer, also known as TSan, is an LLVM based tool to audit threading issues in your Swift and ...
Read More
/ SwiftXcode

PassthroughSubject vs. CurrentValueSubject explained

PassthroughSubject and CurrentValueSubject are two types from the Combine framework that conforms to the Subject protocol. Both are very similar ...
Read More
/ Combine

Picking your minimum iOS version to support

When a new iOS version arrives, it's oftentimes a moment to reflect on the supported iOS versions and see to ...
Read More
/ Workflow

@AppStorage explained and replicated for a better alternative

The @AppStorage Property Wrapper was introduced in SwiftUI to allow easy access to the user defaults. When property wrappers were ...
Read More
/ Swift

How to use throwing properties to catch failures in Swift

Throwing properties allow defining computed properties that throw an error on failure. SE-310 introduced this feature in Swift 5.5 and ...
Read More
/ Swift

Unwrap or throw: Exploring solutions in Swift

Unwrap or throw is a scenario in which we want to throw an error if an optional returns a nil ...
Read More
/ Swift

Async let explained: call async functions in parallel

Async let is part of Swift's concurrency framework and allows instantiating a constant asynchronously. The concurrency framework introduced the concept ...
Read More
/ ConcurrencySwift

Development Assets in Xcode to enrich SwiftUI Previews

Development Assets in Xcode allow you to provide test data to use within SwiftUI previews and other code during development ...
Read More
/ Xcode

Dependency Injection in Swift using latest Swift features

Dependency Injection is a software design pattern in which an object receives other instances that it depends on. It's a ...
Read More
/ Swift

MainActor usage in Swift explained to dispatch to the main thread

MainActor is a new attribute introduced in Swift 5.5 as a global actor providing an executor which performs its tasks ...
Read More
/ ConcurrencySwift

Actors in Swift: how to use and prevent data races

Swift Actors are new in Swift 5.5 and are part of the big concurrency changes at WWDC 2021. Before actors, ...
Read More
/ ConcurrencySwift

Flaky tests resolving using Test Repetitions in Xcode

Flaky tests can be frustrating to deal with. You're ready to open your PR until you realize your tests fail ...
Read More
/ Debugging

Improve discoverability using Static Member Lookup in Generic Contexts

Static Member Lookup is extended to Generic Contexts since the release of SE-0299. It might seem to be a minor ...
Read More
/ Swift

Presenting sheets with UIKit using a UISheetPresentationController

WWDC 2021 introduced iOS 15 with many API changes, including improvements to presenting sheets in UIKit with the new UISheetPresentationController ...
Read More
/ Swift

WWDC 2021 Events, Parties, and Panels you don’t want to miss

WWDC 2021 is around the corner and will bring a ton of (home)work for all of us. A new Xcode, ...
Read More
/ WWDC

Swift Jobs: How to make the right career move

Swift jobs are something we're all interested in. Companies are hiring remotely more than ever since everybody is working from ...
Read More
/ Swift

Fileprivate vs private in Swift: The differences explained

Fileprivate and private are part of the access control modifiers in Swift. These keywords, together with internal, public, and open, ...
Read More
/ Swift

URLSession: Common pitfalls with background download & upload tasks

URLSession enables you to download and upload files while the app is in the background. Basic instructions to get it ...
Read More
/ Swift

NSPredicate based XCTestExpectations for conditional checks

NSPredicate allows us to write predicates for validating a certain outcome. They're often used combined with Core Data fetch requests ...
Read More
/ Swift

How to observe NSManagedObject changes in Core Data using Combine

Observing changes in Core Data NSManagedObject instances with Combine publishers can be a great solution to keep your user interface ...
Read More
/ CombineCore Data

How to create a Conditional View Modifier in SwiftUI

Conditional View Modifier creation in SwiftUI allows you only to apply modifiers if a certain condition is true. Whether it's ...
Read More
/ SwiftUI

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 ...
Read More
/ CombineSwift

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 ...
Read More
/ Swift

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 ...
Read More
/ Swift

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 ...
Read More
/ Swift

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 ...
Read More
/ SwiftUI

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 ...
Read More
/ 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 ...
Read More
/ Swift

Result builders in Swift explained with code examples

Result builders in Swift allow you to build up a result using 'build blocks' lined up after each other. They ...
Read More
/ 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 ...
Read More
/ 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 ...
Read More
/ 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 ...
Read More
/ 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 ...
Read More
/ 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 ...
Read More
/ Swift

Getting started with UIKit in SwiftUI and vice versa

SwiftUI can work together with UIKit by making it easier to add SwiftUI views to UIKit and visa versa using ...
Read More
/ SwiftUI

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 ...
Read More
/ 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 ...
Read More
/ Swift

Xcode Mark Line to improve readability using // Mark: comments

Xcode Mark Lines allows us to create a better overview of sections within our classes or structs. A so-called mark ...
Read More
/ Xcode

App Launch Time: 7 tips to increase performance

App Launch Time is the time it takes before your app becomes responsive after startup. As the first experience of ...
Read More
/ Optimization

Build performance analysis for speeding up Xcode builds

Build performance can be analysed in Xcode to speed up Xcode builds. This can easily speed up your workflow and ...
Read More
/ OptimizationXcode

Data validation on insertion, update, and deletion in Core Data

Data validation in apps is important to make sure we save data conforming to the business rules. A name should ...
Read More
/ Core Data

Derived Attributes to improve Core Data Fetch Performance

Derived attributes are available since iOS 13 and aim to improve fetch performance in many different scenarios. Although we have ...
Read More
/ Core Data

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 ...
Read More
/ 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 ...
Read More
/ Core DataSwift

Try Catch Throw: Error Handling in Swift with Code Examples

Try catch in Swift combined with throwing errors make it possible to nicely handle any failures in your code. A ...
Read More
/ Swift

Overriding UserDefaults for improved productivity

UserDefaults within apps are used to store data related to user configurations. It's an easily accessible data store for saving ...
Read More
/ Xcode

How-to use Diffable Data Sources with Core Data

Diffable Data Sources were introduced at WWDC 2019 as a replacement for UICollectionViewDataSource and UITableViewDataSource. The API is available on ...
Read More
/ Core DataSwift

Diffable Data Sources Adoption with Ease

Diffable Data Sources were introduced at WWDC 2019 and are available since iOS 13. They're a replacement of the good ...
Read More
/ Swift

Persistent History Tracking in Core Data

WWDC 2017 introduced a new concept available from iOS 11 which is persistent history tracking. It's Apple's answer for merging ...
Read More
/ Core DataSwift

withAnimation completion callback with animatable modifiers

SwiftUI is great when it comes down to animations as it does a lot for you with methods like withAnimation ...
Read More
/ SwiftUI

Write-Ahead Logging (WAL) disabled to force commits in Core Data

Write-Ahead Logging is the default journaling mode for Core Data SQLite stores since iOS 7 and OS X Mavericks. Journaling ...
Read More
/ Core DataSwift

How to combine text weights in SwiftUI

Combining multiple text weights in SwiftUI might not look straight forward at first. If you're used to using UIKit you ...
Read More
/ SwiftUI

Adding a closure as a target to UIButton and other controls in Swift

The target-action pattern is used in combination with user interface controls as a callback to a user event. Whenever a ...
Read More
/ Swift

Launch screens in Xcode: All the options explained

Launch screens appear when your app starts up and give the user the impression that your app is fast and ...
Read More
/ Xcode

OSLog and Unified logging as recommended by Apple

OSLog as a replacement of print and NSLog is the recommended way of logging by Apple. It's a bit harder ...
Read More
/ DebuggingWorkflow

ValueTransformer in Core Data explained: Storing absolute URLs

ValueTransformers in Core Data are a powerful way of transforming values before they get inserted into the database and before ...
Read More
/ Core DataSwift

Full-screen development with Xcode and the Simulator

While developing apps it's important to create focus to get in your flow and speed up development. Full-screen mode can ...
Read More
/ Workflow

SVG Assets in Xcode for Single Scale Images

Xcode 12 introduced support for using Scalable Vector Graphic (SVG) image assets in iOS, macOS, and iPadOS. It's one of ...
Read More
/ Xcode

SF Symbols: The benefits and how to use them guide

SF Symbols were introduced during WWDC 2019 and are a big present for us developers. Apple basically gave us free ...
Read More
/ Swift

WWDC 2020: 7 Tips to prepare yourself

In less than a week we will know what WWDC 2020 has brought to us. Apple has been working hard ...
Read More
/ Optimization

@discardableResult in Swift explained: Ignoring return values

While writing methods in Swift you're often running into scenarios in which you sometimes want to ignore the return value ...
Read More
/ Swift

Core Data Performance: 6 tips you should know

Writing Core Data code with performance in mind helps to prepare your app for the future. Your database might be ...
Read More
/ Core DataSwift

Introducing GitBuddy: Changelog and Release manager for GitHub

It's been a few months since we released the initial version of GitBuddy but it's the right time now to ...
Read More
/ Workflow

Expressible literals in Swift explained by 3 useful examples

Expressible literals allow you to initialize types by making use of literals. There are multiple protocols available in the Swift ...
Read More
/ Swift

String Interpolation in Swift explained using 4 useful cases

Swift 5 introduced a decent version of string interpolation with SE-228 and updated the old version of the ExpressibleByStringInterpolation protocol ...
Read More
/ Swift

Using Custom debug descriptions to improve debugging

Custom debug descriptions can help you debug your own custom objects, structs, errors, and other types. Whenever you print out ...
Read More
/ DebuggingSwift

URLs in Swift: Common scenarios explained in-depth

URLs are everywhere in an app we built. We reference local files using bundle paths, we fetch data from a ...
Read More
/ Swift

SwiftUI Previews: Validating views in different states

SwiftUI Previews allow us to develop a lot faster as we can now preview our views live in Xcode. Whenever ...
Read More
/ SwiftUIXcode

Custom Operators in Swift with practical code examples

Custom operators in Swift can make your code easier to read and simpler to maintain. Code can be written less ...
Read More
/ Swift

Custom subscripts in Swift explained with code examples

Custom subscripts in Swift allow you to write shortcuts to elements from collections or sequences and can be defined within ...
Read More
/ Swift

NSFetchedResultsController extension to observe relationship changes

Apple provides us with great classes like the NSFetchedResultsController to interact with Core Data databases in our apps. The API ...
Read More
/ Core DataSwift

Testing private methods and variables in Swift

Testing private methods and variables is often something we run into when writing tests for our applications. You could think ...
Read More
/ Swift

How to mock Alamofire and URLSession requests in Swift

Mocking data requests that are triggered by either Alamofire or URLSession is something we all run into when we start ...
Read More
/ Swift

Creating a command line tool using the Swift Package Manager

A command-line tool can be very useful for automating common tasks to boost developer productivity. While developing iOS applications we ...
Read More
/ Swift

Authentication with signed requests in Alamofire 5

With more than 30k stars on Github, you can tell that Alamofire is a popular framework to use for iOS ...
Read More
/ Swift

Testing push notifications on the iOS simulator

Testing push notifications in the iOS simulator make it a lot easier to add support for remote notifications. You often ...
Read More
/ Workflow

Swift Package Manager framework creation in Xcode

Swift Package Manager is Apple's answer for managing dependencies. We're all familiar with tools like CocoaPods and Carthage but it's ...
Read More
/ Swift

Unique values in Swift: Removing duplicates from an array

Removing duplicates to get unique values out of an array can be a common task to perform. Languages like Ruby ...
Read More
/ Swift

JSON Parsing in Swift explained with code examples

JSON parsing in Swift is a common thing to do. Almost every app decodes JSON to show data in a ...
Read More
/ Swift

Ranges in Swift explained with code examples

Ranges in Swift allow us to select parts of Strings, collections, and other types. They're the Swift variant of NSRange ...
Read More
/ Swift

SwiftLee 2019 in review: Top Swift Development blog posts

You know it's been a great year if you have the feeling that it went really fast. After looking back ...
Read More
/ Swift

No space left on device: Testing low storage scenarios

No space left on device is an error message that starts to show up more lately. Over the years, storage ...
Read More
/ Debugging

4 Tips to make it easier to fix crashes and bugs

Each app comes with performance issues, crashes, and bugs to fix. Although we try our very best we will always ...
Read More
/ OptimizationWorkflow

Advanced asynchronous operations by making use of generics

Asynchronous operations allow you to write long-running tasks in a distinct matter while being able to add dependencies between several ...
Read More
/ Swift

Asynchronous operations for writing concurrent solutions in Swift

Asynchronous operations allow executing long-running tasks without having to block the calling thread until the execution completes. It's a great ...
Read More
/ Swift

Getting started with Operations and OperationQueues in Swift

Operations in Swift are a powerful way to separate responsibilities over several classes while keeping track of progress and dependencies ...
Read More
/ Swift

Concurrent vs Serial DispatchQueue: Concurrency in Swift explained

Concurrent and Serial queues help us to manage how we execute tasks and help to make our applications run faster, ...
Read More
/ Swift

Dark Mode: Adding support to your app in Swift

Dark Mode was introduced in iOS 13 and announced at WWDC 2019. It adds a darker theme to iOS and ...
Read More
/ SwiftXcode

Core Data and App extensions: Sharing a single database

Core Data got better and better over the years with improved APIs that make it easier to work with. The ...
Read More
/ Core DataSwift

Auto Layout in Swift: Writing constraints programmatically

Auto Layout constraints allow us to create views that dynamically adjust to different size classes and positions. The constraints will ...
Read More
/ Swift

Optionals in Swift explained: 5 things you should know

Optionals are in the core of Swift and exist since the first version of Swift. An optional value allows us ...
Read More
/ Swift

Mastering the assistant editor in Xcode 11

Xcode 11 was introduced during WWDC 2019 and contained improvements in the way the assistant editor works. If you're using ...
Read More
/ WorkflowXcode

5 Xcode breakpoints tips you might not yet know

Xcode breakpoints allow us to debug and find out solutions for nasty bugs. Without breakpoints, it would be a fun ...
Read More
/ DebuggingXcode

Rich notifications on iOS explained in Swift

Rich notifications on iOS allow us to make the boring default notification just a little nicer by adding images, GIFs, ...
Read More
/ Swift

Unit tests best practices in Xcode and Swift

Writing unit tests is just as important as writing your application code. Unit tests are oftentimes the first to be ...
Read More
/ SwiftXcode

Struct vs classes in Swift: The differences explained

Swift brings us classes and structs which both can look quite similar. When should you use a struct and when ...
Read More
/ Swift

Xcode Instruments usage to improve app performance

Xcode Instruments is a developer tool that comes for free with Xcode. It has a lot of useful tools to ...
Read More
/ DebuggingXcode

Error handling in Combine explained with code examples

Once you get started with Combine you'll quickly run into error handling issues. Each Combine stream receives either a value ...
Read More
/ CombineSwift

Array vs Set: Fundamentals in Swift explained

An Array and a Set seem to be quite the same in the beginning. They're both collection types and have ...
Read More
/ Swift

Xcode refactoring options explained with examples

A brand new Xcode refactoring engine was introduced in Xcode 9. Although this is quite a few Xcode versions ago ...
Read More
/ SwiftWorkflow

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 ...
Read More
/ OptimizationXcode

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, ...
Read More
/ SwiftWorkflow

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 ...
Read More
/ CombineDebuggingSwift

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 ...
Read More
/ CombineSwift

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 ...
Read More
/ SwiftUIXcode

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 ...
Read More
/ Swift

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 ...
Read More
/ Core DataSwift

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) ...
Read More
/ Swift

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 ...
Read More
/ Swift

Developer productivity boost with Google Search Tips & Tricks

Developer productivity is important to deliver your project on time. There's a lot you can do as I already described ...
Read More
/ Optimization

@unknown default usage with enums in Swift

@unknown default has been introduced in Swift 5 with SE-0192. It's a new addition to the way we can work ...
Read More
/ Swift

Swift 5.0: How to migrate your project and frameworks

Swift 5.0 has been released in March 2019 and is the first ABI stable Swift release. Although a lot of ...
Read More
/ Swift

WWDC First timer tips: How to get the most out of it

WWDC first timer tips help you to get the most out of Apple's World Wide Developer Conference. This conference takes place ...
Read More
/ WWDC

Blog about Swift: Tips and ideas to start your own

How to start your own Swift blog? It's a question I get asked more and more. I've given some tips ...
Read More
/ Swift

Unused localized strings clean up from a Strings file

Strings files are used for localization in iOS and MacOS apps. These files can grow over time and make it ...
Read More
/ Xcode

Required keyword usage in Swift classes and structs

The required keyword in Swift can be used in front of initializers in Swift. Its usage is simple and it's ...
Read More
/ Swift

Speeding up development: a collection of tips

Speeding up development to increase productivity can bring you a lot. You'll work more efficient, deliver faster, and you'll feel ...
Read More
/ OptimizationWorkflow

Danger plugins to speed up code reviews

Danger plugins can help improve something we do every day: code reviews. Code reviews inside pull requests help you to ...
Read More
/ Optimization

Alamofire vs URLSession: a comparison for networking in Swift

Alamofire and URLSession both help you to make network requests in Swift. The URLSession API is part of the foundation ...
Read More
/ Swift

How to use for loop, for each, while, and repeat in Swift (in-depth)

For loop, for each, and repeat are examples of control flow statements in Swift. Although most of them look similar, ...
Read More
/ Swift

Enum explained in-depth with examples in Swift

Enum usage in Swift: If case, guard case, fallthrough, and the CaseIteratable protocol. These are all terms which could sound ...
Read More
/ Swift

QR Code generation with a custom logo and color using Swift

A QR Code is used a lot to share content or to add a new user in apps like Twitter ...
Read More
/ Swift

Cheat sheet examples for Xcode and Swift development

A cheat sheet can be a handy tool to quickly reference Xcode, Swift or iOS logic from a compact overview ...
Read More
/ WorkflowXcode

SwiftLee 2018 in review: Top Swift Development blog posts

With 2019 coming closer it's time to review SwiftLee in 2018 and list the top swift development blog posts of ...
Read More
/ GeneralSwift

Simulator tools to get more out of the simulator

Especially the rulers can help you stop using the Mac screenshot pixel feedback to measure distance in your UI. Simulator ...
Read More
/ DebuggingWorkflow

Implementing Siri support using NSUserActivity, intents and shortcuts

Siri support can be added using an Intent and an IntentUI extension. This adds quite some overhead and is not ...
Read More
/ Swift

Speeding up with Xcode Behaviors

Xcode behaviors can change the way how Xcode responds to certain events. Default behaviors help you already by showing for ...
Read More
/ OptimizationXcode

UI Debugging by making use of third-party apps

Although Xcode brings us the Debug View Hierarchy tool , it's often not enough for more advanced UI debugging. Luckily ...
Read More
/ DebuggingWorkflow

App Store Connect API adoption with use case examples

The new App Store Connect API was announced during WWDC 2018 and makes it possible to write applications for App ...
Read More
/ Swift

Shortcuts essentials in Xcode to speed up your workflow

Making use of essential shortcuts in Xcode can speed up development and keep you in your flow. Xcode allows you ...
Read More
/ WorkflowXcode

Measure the performance of code in Swift

It's important in any type of programming language to know how to measure the performance of code as there are ...
Read More
/ OptimizationSwift

Performance, functional programming and collections in Swift

Functional programming is often done in Swift and so easy that it could easily hit performance. Iterating over large collections ...
Read More
/ OptimizationSwift

SwiftLint valuable opt-in rules to improve your code

SwiftLint is a tool by Realm to enforce Swift style and conventions. It's proven to be adopted by a lot ...
Read More
/ OptimizationSwift

Updating to Swift 4.2

Swift 4.2 is a major release and shipped with Xcode 10. It comes with a lot of code improvements for ...
Read More
/ Swift

Command-click on code options and possibilities in Xcode

Command-click no longer jumps to definition by default since Xcode 9 is introduced. It opens up a handy menu instead ...
Read More
/ Xcode

Defer usage in Swift

Although the defer keyword was already introduced in Swift 2.0, it's still quite uncommon to use it in projects. Its ...
Read More
/ Swift

CompactMap vs flatMap: The differences explained

CompactMap and flatMap, what are the differences and when do you use each? Swift 4.1 introduced this new method with ...
Read More
/ Swift

Effective development by improving the daily routine as a developer

Effective development can be achieved by learning more skills, but also by improving the daily routine for you as a ...
Read More
/ OptimizationWorkflow

Compiler Diagnostic Directives using a hashtag in Swift

The Swift standard library brings quite some compiler diagnostic directives by default. Although this might not ring a bell at ...
Read More
/ DebuggingSwift

Where usage in Swift

Where is a powerful keyword within Swift to easily filter out values. It can be used in many different variants ...
Read More
/ Swift

Debugging breakpoints as a replacement for prints

Debugging breakpoints in Xcode allows you to replace prints and reuse debugging statements in future debugging sessions. By simply enabling ...
Read More
/ Debugging

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 ...
Read More
/ Swift

Using the Network Link Conditioner Utility (how-to)

The Network Link Conditioner on iOS and macOS enables you to test your app in networking conditions like your users ...
Read More
/ DebuggingOptimization

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 ...
Read More
/ Core DataDebugging

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 ...
Read More
/ WorkflowXcode

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 ...
Read More
/ WorkflowXcode

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 ...
Read More
/ Optimization

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 ...
Read More
/ WWDCXcode

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 ...
Read More
/ Swift

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 ...
Read More
/ Swift

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, ...
Read More
/ Swift

Fixing crashes with Firebase Crashlytics

Using Firebase Crashlytics can help you to solve your crashes faster. In this example we're going to dive into a ...
Read More
/ Workflow

Capture iOS simulator video for App Preview

Creating an app preview video can be really easy using the simulator in just a few steps. Capturing an iOS ...
Read More
/ Workflow

Symbolicate crashlogs with Xcode 9 and Bitcode

You can symbolicate a crash log with Xcode 9 fairly easy. Even with bitcode, which give you multiple DSYM files ...
Read More
/ Xcode

Updating to Swift 4.1

Swift 4.1 is released on the 29th of March and will be shipped with Xcode 9.3. Although it's a minor ...
Read More
/ Swift

How to get iOS reviews with 4+ stars for your app

Last May the new Buienradar app went live. With over 2 million users each month, it's one of the biggest ...
Read More
/ Optimization

Optional protocol methods in Swift

In Swift it's kind of unsupported to implemented optional protocol methods. You can, which is ugly, use the @objc syntax: ...
Read More
/ Swift

OptionSet usage in Swift like NS_OPTIONS

Swift 3.0 introduced the OptionSet protocol after renaming from OptionSetType. It is a Swift alternative to the well-known and often used ...
Read More
/ Swift

WWDC First timers tips collection top 10

Again, I'm very happy to be one of the few developers to visit WWDC this year. I'm a first timer ...
Read More
/ WWDC

The start of a new blog

Hi there! After thinking a lot of starting my own blog, I've finally made the decision to create one! As ...
Read More
/ Swift