オブジェクトのプロパティの文字列名を知っています。文字列を使用してそのプロパティを取得および設定するにはどうすればよいですか?
7747 次
2 に答える
50
@weichselは正しいですが、もっと良い方法があります。
使用する:
[anObject valueForKey: @"propertyName"];
と
[anObject setValue:value forKey:@"propertyName"];
明らかに、実行時に動的に構成される@"propertyName"
可能性があります。NSString
この手法はKeyValueコーディングと呼ばれ、Cocoaの基本です。
これが優れている理由-valueForKey
は、プロパティがオブジェクトに返すタイプが何であれ、「ボックス化」するために必要なことを実行するためです。したがって、プロパティがタイプの場合、intを含むインスタンスをint
返します。NSNumber
これは処理がはるかに簡単です-ポインタの価値のあるメモリにたまたま収まるタイプに対してのみperformSelector
機能します。
もあることに注意してください-setValue:forKey:
。
于 2009-12-28T15:20:09.907 に答える
2
@synthesize propertyName
getterメソッドとsetterメソッドの生成を自動化します。
コンパイラは生成します
- (id)propertyName;
- (void)setPropertyName;
NSStringとしてセレクターがある場合は、を使用できますperformSelector:NSSelectorFromString
。
例えば:
[object performSelector:NSSelectorFromString(@"propertyName") ...]
于 2009-12-28T15:13:28.220 に答える