1

私はiPhone用に開発しています。プロパティ名を保持する NSString を使用してプロパティを取得する方法はありますか? 何かのようなもの:

@interface MyLovelyClass : NSObject

@property (nonatomic) double test;

-(double) returnDoubleProperty:(NSString *) propertyName;

そしてそれを呼び出す

MyLovelyClass *mlc=[[MyLovelyClass alloc] init];
double value=[mlc returnDoubleProperty:@"test"];

プロパティの数が限られている場合、入力文字列ごとに値を返す if else ステートメントを手動で記述できることを理解しています。ただし、これをプログラムで実現する方法はありますか?

4

2 に答える 2

7

あなたが説明したことを正確に行うKVC(キー値コーディング)を使用したいが、それが機能するためにメソッドを実装する必要はありません。ただし、オブジェクトで機能するため、次のdoubleようにラップされNSNumberます。

@property (nonatomic, strong) NSNumber *test;

NSNumber *value = [mlc valueForKey:@"test"];
于 2013-07-28T10:52:44.167 に答える
3

プロパティはメソッドであるため、 を通じて呼び出すことができますperformSelector:。文字列からセレクターを作成するには、 を使用しますNSSelectorFromString。はタイプのオブジェクトにdoubleラップされるため、次のように呼び出してプルバックする必要があります。idNSNumberdoubleValue

SEL toCall = NSSelectorFromString(@"test");
double value=[[mlc performSelector:toCall] doubleValue];
于 2013-07-28T10:55:39.523 に答える