「それは、適切なキーのキー値コーディングに準拠していません」と表示されます。それが意味することは、
@interface MyObject : NSObject {
NSString *foo;
NSString *bar;
}
@property (nonatomic, retain) NSString *foo;
@property (nonatomic, retain) NSString *bar;
@end
@interface MyObject
@synthesize foo;
@synthesize bar;
@end
「foo」と「bar」には準拠していますが、「baz」には準拠していません。
それだけの単純なプロパティの場合、デフォルトでは、すべての NSObject サブクラスが基本的な KVC を実装します。コレクションではさらにトリッキーになります。KVC がコレクションに対して正しく機能するようにするには (次のようなことができます:
NSArray *people = ... ;
NSArray *firstNames = [people valueForKey:@"firstName"];
特定の追加メソッドを実装する必要があります。一般に、その機能の最大のユーザーは、CoreData (追加のコレクション メソッドを自動的に生成する) をソースとする Cocoa バインディング (iPhone では使用できません) であるため、通常は基本的に自動的に処理されます。一般に、実際に公開するつもりがない限り、辞書や配列の完全な KVC サポートをオブジェクトに実装しようとはしません。コンプライアンスについては、 KVCガイドを参照してください。