Iphone: Как получить все атрибуты класса? - PullRequest
2 голосов
/ 09 января 2012

У меня есть этот класс:

@interface Mission : BaseModel  
{
NSString  *Description;
NSDate  *EndDate;
NSMutableArray  *MissionSectionList;
NSString  *Name;
NSDate  *StartDate;
}
@property (nonatomic, retain) NSString  *Description;
@property (nonatomic, retain) NSDate  *EndDate;
@property (nonatomic, retain) NSMutableArray  *MissionSectionList;
@property (nonatomic, retain) NSString  *Name;
@property (nonatomic, retain) NSDate  *StartDate;
@end

Можно ли узнать все атрибуты этого класса? Я попробовал это с

Ivar class_getClassVariable (Класс cls, const char * name)

Но я не знаю, какое имя должно быть:

name: имя определения переменной класса для получения.

И на самом деле я хочу получить их все, не зная имени.

Возможно ли это?

1 Ответ

3 голосов
/ 09 января 2012

Вы можете использовать функцию class_copyIvarList, чтобы получить список всех переменных экземпляра класса.Затем вы можете перебрать его, чтобы получить атрибуты каждого ивара.(Обратите внимание, что вы несете ответственность за освобождение памяти, используемой для массива ivars).Пример кода может выглядеть так:

unsigned int count;
Ivar *varList = class_copyIvarList([Mission class],&count);
for (int i = 0; i < count; ++i){
    Ivar var = varList[i];
    // Do when you need with ivar
}
free(varList);
...