0Pricing
Swift Academy · Lesson

Stored Properties and Property Observers

didSet and willSet observers for reacting to property changes.

Stored Properties and Property Observers is a free Swift Academy lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Swift Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Welcome

Stored properties hold values inside a struct or class. Property observers — `willSet` and `didSet` — let you react when a stored property's value changes.

Stored Properties

```swift struct Counter { var count: Int = 0 // stored, mutable let name: String // stored, immutable } ``` Every value you assign with `let` or `var` inside a type is a stored property.

didSet Observer

```swift struct Gauge { var level: Int = 0 { didSet { print("Changed from \(oldValue) to \(level)") } } } var g = Gauge() g.level = 5 // "Changed from 0 to 5" ``` `oldValue` is the automatically provided previous value.

willSet Observer

```swift struct Slider { var value: Double = 0.5 { willSet { print("About to change to \(newValue)") } } } ``` `newValue` is the automatically provided incoming value. `willSet` fires before the assignment.

Both Observers Together

```swift var temperature: Double = 20 { willSet { print("Will become \(newValue)") } didSet { print("Was \(oldValue)") } } temperature = 25 // Will become 25.0 // Was 20.0 ```

Clamping Values with didSet

```swift var volume: Int = 50 { didSet { if volume > 100 { volume = 100 } if volume < 0 { volume = 0 } } } volume = 150 // clamped to 100 ``` A clean pattern for enforcing invariants automatically.

Observers on Subclasses

Property observers also work on inherited properties: ```swift class Base { var x: Int = 0 } class Child: Base { override var x: Int { didSet { print("x changed to \(x)") } } } ```

Observers Don't Fire on Init

```swift struct Model { var value: Int = 0 { didSet { print("changed") } } init(v: Int) { self.value = v } // does NOT trigger didSet } ``` Observers are not triggered during the initial assignment in `init`.

Stored vs Computed — Quick Distinction

• Stored: `var x: Int = 0` — holds actual storage • Computed: `var doubled: Int { x * 2 }` — derived on access, no storage • Observer: attached to a stored property — reacts to changes Observers cannot be added to computed properties (they already have `get`/`set`).

Performance Note

Property observers add function-call overhead on every write. For high-frequency writes (e.g. game loop physics), consider using a plain stored property and calling update logic explicitly for better performance.

Quick Check

Which property observer provides access to the **previous** value?

Recap

Key takeaways: • Stored properties hold values directly • `willSet` fires before the new value is stored; `newValue` is provided • `didSet` fires after; `oldValue` is provided • Observers don't fire during `init` • Great for side effects like UI updates, logging, validation Next: computed properties.

Frequently asked questions

Is the “Stored Properties and Property Observers” lesson free?

Yes — the full text of “Stored Properties and Property Observers” is free to read here on the web, and the Swift Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Swift Academy course, upgrade to CoddyKit PRO.

What will I learn in “Stored Properties and Property Observers”?

didSet and willSet observers for reacting to property changes. You practise Swift Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Swift Academy?

No prior experience is required. Swift Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Stored Properties and Property Observers” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Swift Academy lesson?

Yes. Every Swift Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Memberwise Initializers and Custom Inits
  2. Stored Properties and Property Observers
  3. Computed Properties in Structs
  4. Mutating Methods and Copy-on-Write Semantics
← Back to Swift Academy