2012-01-09 21 views
2

我有这个类:Iphone:如何获得一个类的所有属性?

@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 

是否有可能找出这个类的所有atrributes? 我

伊瓦尔class_getClassVariable(CLS级,为const char *名)试了一下

但我不知道这个名字应该是什么:

名称:名称的类变量定义来获取。

而实际上我想在不知道名字的情况下得到他们。

这可能吗?

+0

如何使一个方法返回具有这些属性的数组?但它可能是一个不好的方法:) – Novarg 2012-01-09 10:09:03

+0

什么信息的属性是你试图找到?它说你不想要这个名字,你想知道他们是什么类型? – ColdLogic 2012-01-09 10:33:14

+0

我其实想要名称和类型。我不确定这个参数的名字是什么。因为我想找出名字。 – DeFlo 2012-01-09 11:49:21

回答

3

您可以使用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); 
+0

谢谢!我如何输出var?我做了NSLog(@“MY ATTR:%@”,var);但它说EXC_BAD_ACCES。 – DeFlo 2012-01-09 10:20:00

+1

Ivar是一个指向结构的指针,而不是obj-c类 - 你不能直接使用NSLog输出它。使用ivar_getName,ivar_getTypeEncoding ,ivar_getOffset函数来获取iVar属性。 – Vladimir 2012-01-09 10:24:42

+0

啊,好的。凉。谢谢您的回答。这正是我所需要的:-) – DeFlo 2012-01-09 10:28:21

相关问题