Introduction to Swift Keypaths

Example: Generic Settings

released Fri, 29 Mar 2019
Swift Version 5.0

Generic Settings

Our first practical example showcases how keypaths, protocols, and keypath composition work together to allow you to handle app settings in a generic manner. Here is the problem we're trying to solve, have a look at these different settings screens for our Chat app:


Lets map those settings as a type:

final class ProfileSettings {

   var displayName: String

   var shareUpdates: Bool


final class PrivacySettings {

   var passcode: Bool

   var addByID: Bool


final class Settings {

   var profileSettings: ProfileSettings

   var privacySettings: PrivacySettings


If we want to find a generic abstraction for these settings, it would be very difficult. That's because they're all so very different. Their types are String, Bool, Bool, Bool, and ProfileSettings, PrivacySettings. Even more, as we expand our settings they will become more and more different. Lets try to find a nice solution for this by utilizing keypaths.