#import <Foundation/NSObjCRuntime.h> #import <objc/runtime.h> - (NSString *)serializeObject:(id)theObject { NSString *className = NSStringFromClass([theObject class]); const char *cClassName = [className UTF8String]; id theClass = objc_getClass(cClassName); unsigned int outCount, i; objc_property_t *properties = class_copyPropertyList(theClass, &outCount); NSMutableArray *propertyNames = [[NSMutableArray alloc] initWithCapacity:1]; for (i = 0; i < outCount; i++) { objc_property_t property = properties[i]; NSString *propertyNameString = [[NSString alloc] initWithCString:property_getName(property) encoding:NSUTF8StringEncoding]; [propertyNames addObject:propertyNameString]; [propertyNameString release]; NSLog(@"%s %s\n", property_getName(property), property_getAttributes(property)); } NSMutableDictionary *finalDict = [[NSMutableDictionary alloc] initWithCapacity:1]; for(NSString *key in propertyNames) { SEL selector = NSSelectorFromString(key); id value = [theObject performSelector:selector]; if (value == nil) { value = [NSNull null]; } [finalDict setObject:value forKey:key]; } [propertyNames release]; NSString *retString = [[CJSONSerializer serializer] serializeDictionary:finalDict]; [finalDict release]; return retString; }
IOS 反射机制
猜你喜欢
转载自iaiai.iteye.com/blog/2114635
今日推荐
周排行