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.
SPONSORED Still waiting on your CI build? Speed it up ~3x with Blaze - change one line, pay less, keep your existing GitHub workflows. First 25 HWS readers to use code HACKING at checkout get 50% off the first year. Try it now for free!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.