Swift version: 5.10
Swift keypaths are a way of storing uninvoked references to properties, which is a fancy way of saying they refer to a property itself rather than to that property’s value.
Here’s an example struct storing a name and maximum warp speed of a starship:
struct Starship {
var name: String
var maxWarp: Double
}
let voyager = Starship(name: "Voyager", maxWarp: 9.975)
Keypaths let us refer to the name
or maxWarp
properties without reading them directly, like this:
let nameKeyPath = \Starship.name
let warpKeyPath = \Starship.maxWarp
If you want to read those keypaths on a specific starship, Swift will return you the actual values attached to those properties:
print(voyager[keyPath: nameKeyPath])
print(voyager[keyPath: warpKeyPath])
In practice, this means you can refer to the same property in multiple places all using the same keypath – and if you decide you want a different property you can change it in just one place.
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.