[Swift]コードスニペット willSet/didSet

     
⌛️ < 1 min.
忘れてしまった時に コピペで使用できるスニペットシリーズ willSet/didSet 編

環境&対象

以下の環境で動作確認を行なっています。

  • macOS Ventura 13.3 Beta3
  • Xcode 14.3 Beta2
  • iOS 16.0

willSet/didSet

Swift では stored property が変更される直前・直後の処理を記述できます。

The Swift Programming Language での説明は、こちら

コード例

class MyClass {
  var variableName: Int = 10 {
    willSet(newValue) { // newValue is default parameter name for new value
      print("\(newValue) will replace")
    }
    didSet(oldValue) { // oldValue is default parameter name for old value
      print("\(oldValue) was replaced")
    }
  }
}

注意点:
willSet でプロパティを変更しても上書きされてしまいます。

didSet では、プロパティを上書きすることが可能です。

まとめ

プロパティ変更の 直前・直後の処理を記述

プロパティ変更の 直前・直後の処理を記述
  • willSet は、変更直前の処理
  • didSet は、変更直後の処理
  • willSet では 新しい値を newValue で参照できる(パラメータ名指定可能)
  • didSet では 古い値を oldValue で参照できる(パラメータ名指定可能)

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

Swift学習におすすめの本

詳解Swift

Swift の学習には、詳解 Swift という書籍が、おすすめです。

著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。

最新版を購入するのがおすすめです。

現時点では、上記の Swift 5 に対応した第5版が最新版です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です