Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

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 change at first, but it allows simplifying quite some code. Especially if you’re writing your views in SwiftUI, you’re going to have fun adjusting your code for this new addition released in Swift 5.5. WWDC … 

 

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. iOS 14 already introduced the new sheet presentation style. Still, up until iOS 15, we didn’t have the possibility to create an Apple Maps-like implementation of the sheet with a smaller height. The new UISheetPresentationController … 

 

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, new APIs, SwiftUI improvements, and likely a lot more things we can’t predict. WWDC is often called “Christmas for iOS Engineers” as you can see all these new announcements as little big presents. After an … 

 

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 home either way and the request for new iOS and macOS apps keeps on growing. As a Swift engineer, it’s tempting to jump on a recruiter’s message telling you about a new job position offering … 

 

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, make it possible to restrict access to parts of your code from code in other source files and modules. The private access level is the lowest and most restrictive level whereas open access is the … 

 

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 working are often found online, but it’s hard to make it work as expected and debug the flows. After implementing background uploading support for Collect by WeTransfer myself, I decided to write down my learnings. … 

 

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 and require a certain knowledge for writing custom formats. Besides my earlier shared Unit tests, best practices in Xcode and Swift predicates can be useful when writing unit tests. We can benefit from using predicates … 

 

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 in sync with the latest changes. After reading through my posts in the Combine and Core Data categories, you might know more about those individual frameworks, but how do you “combine” them together? Techniques like … 

 

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