キーバリューコーディング(Key Value Coding)
macOS 0.15.7 / Xcode 11.3.1 / Swift 5.0
キーバリューコーディングとは、辞書の読み書きと同じように、プロパティ名をキーにしてプロパティの値を読み書きする方法である。
キーバリューコーディングの書式
値の参照
object.value(forKey: propertyName)
値の更新
object.setValue(value, forKey: propertyName)
(1) プロパティを参照する / 更新する
クラスを定義する
キーバリューコーディングの対象のプロパティは @objc キーワードが必要である。
プロパティを参照する
プロパティを更新する
(2) プロパティがクラスのインスタンスの場合の参照 / 更新
上記 MyClassをラップするクラス
値をキーパスで指定する
クラスが階層構造になっている場合、キーはプロパティ名をドットで連結したキーパスにより指定する。
プロパティを参照する
プロパティを更新する
値にインスタンスを指定する
プロパティを参照する
プロパティを更新する
(3) コントロールを参照する
AppDelegateクラスに定義したコントロール(NSTextField)もクラスのメンバなので、キーバリューコーディングにより参照が可能である。ここではテキストフィールドに値を設定している。
(4) キーに指定したプロパティが存在しないときの対策
キーバリューコーディングで存在しないプロパティを指定した場合、ランタイムライブラリの value(forUndefinedKey: )関数が起動する。この関数をオーバーライドすれば、処理を継続し、異常終了させないことができる。