2016-04-02 8 views
0

Objective-Cクラスのすべてのivarsの値を取得し、配列にロードしたいと考えています。文字列名に基づいて変数の値を取得する方法は?

私は、次のコードを持っている:

Class class = [self class]; 
NSString *myClassName = NSStringFromClass([self class]); 
unsigned int count; 
Ivar *ivars = class_copyIvarList(class, &count); 
for (int i=0; i<count; i++) { 
    Ivar ivar = ivars[i]; 
    const char* name = ivar_getName(ivar); 
    const char* typeEncoding = ivar_getTypeEncoding(ivar); 
    NSLog(@"Class Name: %@ ivar: %s Type Encoding: %s",myClassName, name, typeEncoding); 
} 

だから私は、文字列(名前)と名前を持ち、今、私はそのIVARの値を必要とします。

ような何か:

value = [self valueFromStringName(name)]; 

を私はmyDateと呼ばれる日を持っている場合、私はメソッドに文字列myDateを渡すことができますし、それが保持している日付の値を返すようにするため。

メソッドの文字列名からメソッドを実行するルーチンがありますが、文字列名から値を取得できる場所はわかりません。 IVARの値を取得するために

id object_getIvar(id object, Ivar ivar) 

:?あなたはまだ、なぜ継続しないと使用ランタイム関数を使用している考える

答えて

1

実際に文字列検索を使用する場合は、KVC、「単純属性のアクセサー検索パターン」、valueForKey:NSObjectに設定してください。

HTH

関連する問題