Property observers let you run code before or after any property changes. To demonstrate this, we’ll write a Progress
struct that tracks a task and a completion percentage:
struct Progress {
var task: String
var amount: Int
}
We can now create an instance of that struct and adjust its progress over time:
var progress = Progress(task: "Loading data", amount: 0)
progress.amount = 30
progress.amount = 80
progress.amount = 100
What we want to happen is for Swift to print a message every time amount
changes, and we can use a didSet
property observer for that. This will run some code every time amount
changes:
struct Progress {
var task: String
var amount: Int {
didSet {
print("\(task) is now \(amount)% complete")
}
}
}
You can also use willSet
to take action before a property changes, but that is rarely used.
BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.