[解決済み] objectForKeyとvalueForKeyの違い?
2022-03-16 18:22:33
質問
とはどのような違いがあるのでしょうか?
objectForKey
と
valueForKey
?
どちらもドキュメントで調べましたが、私には同じに思えました。
解決方法は?
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 プロトコルリファレンス .
お役に立てれば幸いです。
関連
-
[解決済み] イニシャライザーの要素がコンパイル時定数でない
-
[解決済み] Objective-CでNSStringsを連結するためのショートカット集
-
[解決済み] Objective-Cの定数
-
[解決済み] Cocoa:フレームとバウンドはどう違うの?
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] Cocoa Autolayout: コンテンツの抱擁 vs コンテンツの圧縮抵抗の優先順位
-
[解決済み] クラスメソッドとインスタンスメソッドの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-CでNSStringsを連結するためのショートカット集
-
[解決済み] Objective-Cは構造体の使用を禁じていますか?
-
[解決済み] NSTaggedPointerStringをNSStringに変換する。
-
[解決済み] arc4randomとarc4random_uniformの違いは何ですか?重複
-
[解決済み] デバイス用にコンパイルするとApple Mach-Oのリンカーエラーが発生する。
-
[解決済み] 開発者の身元が確認できないため開けない
-
[解決済み] iOS 8で位置情報サービスが利用できない
-
[解決済み] Objective-Cで、オブジェクトの種類をテストするにはどうしたらいいですか?
-
[解決済み] C言語で純粋にiOSアプリを書く方法
-
[解決済み】NSDateで年/月/日を取得する。