1. ホーム
  2. objective-c

[解決済み] objectForKeyとvalueForKeyの違い?

2022-03-16 18:22:33

質問

とはどのような違いがあるのでしょうか? objectForKeyvalueForKey ? どちらもドキュメントで調べましたが、私には同じに思えました。

解決方法は?

objectForKey:NSDictionary メソッドを使用します。は NSDictionary と同じようなコレクションクラスです。 NSArray ただし、インデックスを使うのではなく、キーを使って項目を区別します。キーは任意の文字列を指定します。2つのオブジェクトが同じキーを持つことはありません (ちょうど NSArray は同じインデックスを持つことができない)。

valueForKey: はKVCメソッドです。どのようなクラスでも動作します。 valueForKey: を使用すると、文字列を名前としてプロパティにアクセスすることができます。ですから、例えば Account クラスで、プロパティ accountNumber , 次のようなことができる。

NSNumber *anAccountNumber = [NSNumber numberWithInt:12345];
Account *newAccount = [[Account alloc] init];

[newAccount setAccountNumber:anAccountNUmber];

NSNumber *anotherAccountNumber = [newAccount accountNumber];

KVCを使うと、動的にプロパティにアクセスできるんだ。

NSNumber *anAccountNumber = [NSNumber numberWithInt:12345];
Account *newAccount = [[Account alloc] init];

[newAccount setValue:anAccountNumber forKey:@"accountNumber"];

NSNumber *anotherAccountNumber = [newAccount valueForKey:@"accountNumber"];

これらは等価な文の集合です。

すごいな、と思うのはわかるが、皮肉である。KVCはそれほど便利には見えない。実際、quot;wordy"に見える。でも、実行時に何かを変えたいとき、他の言語ではもっと難しいクールなことがたくさんできます(でも、これは質問の範囲外です)。

KVCについてもっと学びたいなら、特に以下のサイトでググればたくさんのチュートリアルがあります。 Scott Stevensonのブログ . また NSKeyValueCoding プロトコルリファレンス .

お役に立てれば幸いです。