PrintObject
2020年02月13日
作者:佚名
下面是来客网 jb51.cc 通过网络收集整理的代码片段。
来客网小编现在分享给大家,也给大家做个参考。
+ (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]; id value = nil; @try { NSString *propName = [NSString stringWithUTF8String:property_getName(prop)]; value = [self getObjectInternal:[obj valueForKey:propName]]; if(value != nil) { [dic setObject:value forKey:propName]; } } @catch (NSException *exception) { [self logError:exception]; } } return dic; } + (void)print:(id)obj { NSLog(@"%@",[self getObjectData:obj]); } + (NSData*)getJSON:(id)obj options:(NSJSONWritingOptions)options error:(NSError**)error { return [NSJSONSerialization dataWithJSONObject:[self getObjectData:obj] options:options error:error]; } + (id)getObjectInternal:(id)obj { if(!obj || [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]; } + (void)logError:(NSException*)exp { #if PRINT_OBJ_LOGGING NSLog(@"PrintObject Error: %@",exp); #endif }
以上是来客网(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。
以上是来客网为你收集整理的PrintObject全部内容,希望文章能够帮你解决PrintObject所遇到的程序开发问题。
如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。