キー値コーディング
キー値コーディングは、間接的に文字列識別子を使用して、オブジェクトの属性および関係性にアクセスするためのメカニズムです。それが支えるのが、Cocoa プログラミングに特別ないくつかの機構や技術に関連している、それらの間のコアデータ、アプリのスクリプト対応、バインディング技術、宣言されたプロパティの言語機能です。(スクリプト機能とバインディングは、OS X 上の Cocoa に固有のものです)また、あなたのプログラムコードを簡素化するために、キー値コーディングを使用することができます。
オブジェクトのプロパティと KVC
キー値コーディング(またはKVC)の中心となるのは、プロパティの一般的な概念です。プロパティは、オブジェクトがカプセル化する際の単位を指します。プロパティには、2つの一般的なタイプのいずれかになります:属性(たとえば、名前、タイトル、小計、または textColor(テキストの色) 属性)、または他のオブジェクトとの関係。関係は、1対1または1対多のいずれかです。1対多の関係の値は、通常、関係が順序付けられているか順序付けられていないかに応じて、配列か集合です。
KVC は文字列識別子であるキーを介して、オブジェクトのプロパティを検索します。キーは、通常、オブジェクトによって定義されたアクセサメソッドまたはインスタンス変数の名前に対応します。キーは、特定の規則に準拠する必要があります:それは、ASCII でエンコードされ、小文字で始まり、余白があってはなりません。キーパスは、横切るオブジェクトのプロパティの順序を指定するために使用され、ドットで区切られたキーの文字列です。シーケンスの最初のキーのプロパティは、特定のオブジェクト(次の図の employee1)を基準とし、その後の各キーは、前のプロパティの値を基準に評価されます。
クラスを KVC に準拠させる
NSKeyValueCoding の、非公式なプロトコルにより、KVC が可能となります。そのメソッド valueForKey: と setValue:forKey の2つは、そのキーが与えられたとき、プロパティ値を取得し、設定しているため、特に重要です。NSObject は、これらのメソッドのデフォルトの実装を提供し、クラスがキー値コーデングに準拠している場合には、この実装に依存します。
プロパティが KVC に準拠する方法は、そのプロパティが、属性、1対1の関係、または1対多の関係であるかどうかに依存します。属性および1対1の関係では、クラスが優先(key は、プロパティキーを参照します)順で、以下の少なくとも1つを実装する必要があります。
- クラスには、key と言う名前で宣言されたプロパティがあります。
- これは、key と言う名前の、アクセサメソッドを実装し、プロパティが変更可能なら、SetKey: を実装します。(プロパティがブール属性である場合、ゲッターアクセサメソッドは、 isKey と言う形式を持っています。)
- これは、key または _key と言う形式のインスタンス変数を宣言しています。
1対多の関係の KVC 準拠の実装は、より複雑な手順です。この手順が何であるかを学ぶためには、もっと詳しくキー値コーディングを記述した文書を参照してください。
前提条件の記事
関連記事
既出の議論
キー値コーディングプログラミングガイド
次の章
前の章