獲得類的屬性

weixin_34107955發表於2017-02-27

1、獲取類的屬性方法

OBJC_EXPORT objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)

OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0);

2、獲得屬性的值

OBJC_EXPORT const char *property_getName(objc_property_t property)

OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0);

例子:(把某個類屬性轉換成字典)

- (NSDictionary *)getObjectData:(id)obj

{

          NSMutableDictionary *dic = [NSMutableDictionary dictionary];

          unsigned int propsCount;

          objc_property_t *props = class_copyPropertyList([obj class], &propsCount); //獲得屬性列表

          for (int i = 0; i < propsCount; i++) {

                    objc_property_t prop = props[i];

                    NSString *propName = [NSString stringWithUTF8String:property_getName(prop)]; //獲得屬性的名稱

                    id value = [obj valueForKey:propName]; //kvc讀值

                    if (value == nil) {

                              value = [NSNull null];

                    }

                    else {

                               value = [self getObjectInternal:value]; //自定義處理陣列,字典,其他類

                    }

                    [dic setObject:value forKey:propName];

         }

         return dic;

}

相關文章