Building for newer versions of iOS from an older version of Xcode

You might have encountered this problem; a project you're working hasn't yet been updated for the most recently released version of Xcode, but your device is already running a recent version of iOS, which of course is not supported. In my particular case, the project had a bug that only…

Resuming AVPlayer after being interrupted

As part of a pet-project, I've been building a media player which internally uses AVPlayer. One of my goals is to build a component that could potentially easily be re-used while it handles most of the groundwork around AVPlayer, such as (but not limited to) retrieving metadata, progress info, and…

Better JSON parsing in Swift

Some time after this post was published, I learned that support for immutable structs was actually added to ObjectMapper in the form of ImmutableMappable, which does exactly what you'd expect! Apple also released Swift 4, which includes Codable, which is used now by Swish instead of Argo. Every since Swift…

Quick tip: Deleting merged branches

If you are working with feature branches, a common approach is to delete the feature branch after it has been merged back to your main development branch. This helps to keep your project tidy and organized. Here are two short bash snippets to delete merged branches. Deleting local branches that…

Replacing Core Data with Realm

The side project mentioned in the previous post requires some data to be persistent. While I had looked at Realm in the past, eventually I drifted back to Core Data. This was mostly due to NSFetchedResultsController and the fact that it enables animating changes to your table- and collectionviews. At…

Making a Swift app themeable

Recently I started working on a new side project which includes an iOS application written in Swift. Because it's a new project that should support multiple themes eventually, it seemed wise to add theming from the start. While there are multiple libraries that let you theme your app, including css-like…