循环类的所有属性?

时间:2015-06-18 14:10:21

标签: ios objective-c

假设我有一些包含数据结构的类:

classA:
@property(strong)NSString *name;
@property(strong)NSString *place;
@property(strong)NSString *age;

我创建classA的实例并将其传递给其他classB,此classB应将所有A's值保存到内存中(例如用户默认值) )。

classB如何将classA作为参数,而不知道其中包含哪些属性,只需遍历所有属性并将其保存到内存中?

目标是在classA没有B的情况下添加和删除B中的项目,但{{1}}可以循环播放并保存它们。(不使用单个数组)在A)

1 个答案:

答案 0 :(得分:2)

根据this Apple Documentation,您可以这样做。

您必须导入运行时框架,如下所示

     #import <objc/runtime.h>


    id LenderClass = objc_getClass("Lender");
    unsigned int outCount, i;
    objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);
    for (i = 0; i < outCount; i++) {
        objc_property_t property = properties[i];
        fprintf(stdout, "%s %s\n", property_getName(property), property_getAttributes(property));
    }


  // This class_copyPropertyList will do that purpose.
  objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);