Blog

  • Adaptable Interactions with Core Data

    Core Data has evolved over the years as one of Apple’s most valued frameworks. Within a matter of minutes, a developer can add an object management persistence system that supports a long list of built-in features such as change tracking, undo/redo functionality and more recently cloud synchronization. The framework also provides some convenient drop-in components…

  • Side Effects with Combine

    One of the benefits of adopting Combine’s publisher approach to asynchronous programing is that every operation is a stream or pipeline that we can subscribe and react to via powerful operators. This works really well for situations where would like to execute code outside the scope of a publisher as certain events occur. Such executions…

  • The Core Data CloudKit Paradox

    What came first? the chicken or the egg? The ancient paradox that describes the problem of determining cause and effect. Maybe the answer is both? This oddly resonates with a common problem when it comes to projects that utilize the NSPersistentCloudKitContainer. The Paradox When an app is first launched, it can take sometime for the user’s…

  • Combining Core Data with Generics

    If you’ve caught the Combine bug, chances are you are beginning to leverage the framework for all sorts of asynchronous logic in your code base. One such area that I’ve found myself interacting with a lot lately in this regard is Core Data. When Apple debuted Combine in iOS 13, the release included some convenient…

  • Abstracting Navigation in SwiftUI

    At first glance, navigation in SwiftUI seems pretty straightforward. With a combination of NavigationView, NavigationLink and .sheet, we can quickly link views together in ways that resemble UIKit. But when an app grows more than a handful of views, or you find yourself in situations where you need a more flexible method of triggering navigation, you’ll quickly discover that the…

  • Awaiting WebSockets in SwiftUI

    WebSockets have become the standard network protocol for chat and event-driven based applications given their ability to provide a persistent communication channel between clients and a server. Rather than poll a server for results at set intervals, WebSockets emit messages as they become available to connected participants resulting in reduced latency and bandwidth. Apple provides…