2016-04-02 23 views
0

Tüm ivarların değerini Objective-C sınıfında almak ve bunları bir diziye yüklemek istiyorum.Dize adına dayalı bir değişkenin değeri nasıl alınır?

Aşağıdaki kod var:

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); 
} 

Bu yüzden bir dize (isim) olarak isim var ve şimdi o Ivar değerini gerekir. gibi

şey: Ben myDate denilen bir tarih varsa

value = [self valueFromStringName(name)]; 

Bu yüzden bir yöntem haline dize myDate geçirebilmesi ve buna tutan Tarih değerini döndürecektir.

Yöntemin dize adından yöntemleri çalıştıran rutinleri görüyorum, ancak değeri bir dize adından nereden alabileceğinizi göremiyorum.

id object_getIvar(id object, Ivar ivar) 

Ivar değerini elde etmek için:

cevap

1

Zaten neden devam etmek ve kullanım değildir çalışma zamanı işlevlerini kullanan Verilen?

Gerçekten bir dize kullanmak isterseniz, KVC, "Basit Özellikler için Accessor Search Patterns" ve NSObject numaralı telefondan valueForKey:.

HTH