One of the most important roles of any software architecture is to make the relationships between the various objects and values within an application as clear and well-defined as possible.
This week, let's take a look at how we can do that by using Swift's powerful type system to set up locks and keys to get a stronger, compile-time guarantee that the intended flow of our app will remain intact at runtime.