ios对象转换为字典

来源:互联网 发布:智能手表推荐 知乎 编辑:程序博客网 时间:2024/05/20 06:25
 /** *  对象转换为字典 * *  @param obj 需要转化的对象 * *  @return 转换后的字典 */+ (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];        if(value == nil) {            value = [NSNull null];        } else {            value = [self getObjectInternal:value];        }        [dic setObject:value forKey:propName];    }    return dic;}+ (id)getObjectInternal:(id)obj {    if([obj isKindOfClass:[NSString class]]       ||       [obj isKindOfClass:[NSNumber class]]       ||       [obj isKindOfClass:[NSNull class]]) {        return obj;    }    if([obj isKindOfClass:[NSArray class]]) {        NSArray *objarr = obj;        NSMutableArray *arr = [NSMutableArray arrayWithCapacity:objarr.count];        for(int i = 0; i < objarr.count; i++) {            [arr setObject:[self getObjectInternal:[objarr objectAtIndex:i]] atIndexedSubscript:i];        }        return arr;    }    if([obj isKindOfClass:[NSDictionary class]]) {        NSDictionary *objdic = obj;        NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:[objdic count]];        for(NSString *key in objdic.allKeys) {            [dic setObject:[self getObjectInternal:[objdic objectForKey:key]] forKey:key];        }        return dic;    }    return [self getObjectData:obj];}
0 0