objectForKeyとvalueForKeyの違いは何ですか?質問する

objectForKeyとvalueForKeyの違いは何ですか?質問する

objectForKeyとの違いは何ですかvalueForKey? ドキュメントで両方を調べましたが、私には同じに思えました。

ベストアンサー1

objectForKey:はメソッドですNSDictionaryNSDictionaryは に似たコレクション クラスですNSArrayが、インデックスを使用する代わりにキーを使用して項目を区別します。キーは、指定する任意の文字列です。2 つのオブジェクトが同じキーを持つことはできません ( 内の 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 はそれほど便利そうには見えません。実際、KVC は「冗長」に見えます。しかし、実行時に変更したい場合、他の言語でははるかに難しい多くの優れた機能を実行できます (ただし、これは質問の範囲を超えています)。

KVCについてもっと知りたい場合は、Googleで検索すると多くのチュートリアルがあります。スコット・スティーブンソンのブログ. また、NSKeyValueCoding プロトコルリファレンス

おすすめ記事