Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.
Welcome to this weeks issue of Swift Developments! I’m pleased to have media partner @skillsmatter back as a sponsor this week and I’m also lucky enough to have a second, new, sponsor this week – @exyteHQ with their vectory graphics library Macaw – a powerful open-source vectory graphics library that makes it easy to build your own custom components and animations in Swift. Make sure you check them out. On the links front it’s been a pretty busy week, with a whole bunch of great stuff to choose from. Enjoy.
@iKenndac on the trials and tribulations of working with the App Store and how one mistake along with a glitch in the App Store has left Daniel in a difficult situation. Fingers crossed it works itself out.
In alot of cases, we don’t have infinite time to come up with a design for our apps. There’s either a deadline for the launch or at the very least, clients are wanting to see progress. In this article, @zecarlostorre shares 7 tips for speeding up your design process along with his real-world experience of applying these techniques to the onboarding experience of the TomTom navigation app.
The full list of speakers for iOSCon 2019 has been announced! The conference is shaping up to be our best yet with speakers including Swift expert John Sundell and Kaya Thomas of Slack. Come and join us on 21st – 22nd March in London, organised by Swift Developments’ media partner @skillsmatter!
Swift as a language has been designed to be ‘safe’ from the ground up. With Swift 5, this ethos is being taken one step further with the introduction of Exclusivity Enforcement. Introduced via the Swift Evolution process as part of SE-0176: Enforce Exclusive Access to Memory it has already been introduced in debug builds in Swift 4.0 but in Swift 5 will be turned on by default in release builds and will introduce new runtime checks to ensure exclusive access to variables before they are modified. @atrick has posted some details on how this will work along with the potential impact to your code.
Swift ABI stability has been a long-standing goal for the Swift Evolution process. This week things took one step forward with @UINT_MIN posting an article on the Swift.org blog looking at ABI Stability in Swift 5 (it’s pretty much there on Apple platforms) as well as the other pieces of the jigsaw that are needed to round out the picture for both runtime *and* compile time compatibility. It’s a good write-up and a useful explanation of how all the bits fit together.
Using a style guide for your Swift code has a wide range of benefits including making it easier to read, reducing the time to onboard new team members and generally reducing the cost of maintenance. @V8tr has published a nice write-up of some of the most popular style guides from around the community in a week where @fco_diaz and the team at Airbnb have also coincidentally added to this list by releasing a Swift style guide of their own. Ooo.. the choices.
Unfortunately, there is no standard components in iOS for composing drawings, so we’re often forced to use cumbersome rendering directly within a graphics context. To solve this problem the iOS community on GitHub have created a number of frameworks to describe graphic components as a scene of primitives. Nowadays, Macaw is the most powerful of these, allowing you to create custom components, charts, diagrams and to also incorporate SVG files. It’s an open source project with 4K+ starts on Github, so take it, use it, and make your life easier.
Based on the GOF observer pattern – notifications are a powerful way for us to decouple parts of our app design by registering for notifications about different system events. However, the out-of-the-box solution provided by Apple has some issues, the least of which is that it relies on strings and parameters inside dictionaries to communicate the notification specifics which inevitably leads to typos and eventual runtime errors. Leandro Pérez has been exploring these issues and has come up with an alternative reactive, strongly-typed, approach using protocols and extensions.
As you probably know, having great app performance is a critical component of a great overall user experience. @soulchildpls has 5 tips for you to think going forwards.
Core Data is a popular approach for persistence in many iOS apps but over time as our apps evolve we inevitably need to change the data model to accomodate new features. In this in-depth article, @wibosco walks you through Core Data’s migration features and shows you how to build a system to manipulate this migration mechanisms to make migrations simpler whilst simultaneously protecting our users existing data.
Writing good, clean documentation is an essential part of writing any code, even more so if you’re developing a framework. In this article @Swanros walks you through how to write and publish your own code documentation using tools such as Jazzy along with a number of tips, tricks and techniques to keep in mind when writing your own docs.
With Swift and iOS projects commonly relying on third-party libraries – why not keep track of what those dependencies are and why you added them to your project? I have to say, I’m going to be shamelessly stealing this idea from @karolsmazur.
Protocols and generics get a lot of love in the Swift community but what about attributes – you know those things like @objc or @escaping? In this talk from dotSwift 2019 @borkware takes a look at the different attributes we have available along with a peek at how they work under the hood.
Table Views are the bread and butter of almost every iOS app but they can be frustrating to work with, especially with Apple’s out of the box implementation. In this talk @hellosunschein shows you some practical approaches, using protocols, extensions and generics that make working with UITableViews easier, less error prone and more re-usable.
Coordinators are becoming an increasingly popular approach for structuring your iOS apps making it easier to reason about your code and reducing the size of your view controllers by breaking the responsibility of navigation out into a separate classes. @twostraws has published two videos on this topic recently, one covering the basics and this week, a more advanced talk that answers six of the most common questions about using coordinators in practice.