// model模型转字典 实现代码
-(NSDictionary*)dicFromObject:(NSObject*)object {
? ? NSMutableDictionary *dic = [NSMutableDictionary dictionary];
? ? unsignedintcount;
? ? objc_property_t*propertyList =class_copyPropertyList([objectclass], &count);
? ? for(inti =0; i < count; i++) {
? ? ? ? objc_property_tproperty = propertyList[i];
? ? ? ? constchar*cName =property_getName(property);
? ? ? ? NSString*name = [NSStringstringWithUTF8String:cName];
? ? ? ? NSObject*value = [objectvalueForKey:name];//valueForKey返回的数字和字符串都是对象
? ? ? ? if([valueisKindOfClass:[NSStringclass]] || [valueisKindOfClass:[NSNumberclass]]) {
? ? ? ? ? ? //string , bool, int ,NSinteger
? ? ? ? ? ? [dicsetObject:valueforKey:name];
? ? ? ? }elseif([valueisKindOfClass:[NSArrayclass]] || [valueisKindOfClass:[NSDictionaryclass]]) {
? ? ? ? ? ? //字典或字典
? ? ? ? ? ? [dicsetObject:[selfarrayOrDicWithObject:(NSArray*)value]forKey:name];
? ? ? ? }elseif(value ==nil) {
? ? ? ? ? ? //null
? ? ? ? ? ? //[dic setObject:[NSNull null] forKey:name];//这行可以注释掉?????
? ? ? ? }else{
? ? ? ? ? ? //model
? ? ? ? ? ? [dicsetObject:[selfdicFromObject:value]forKey:name];
? ? ? ? }
? ? }
? ? return[diccopy];
}
//将可能存在model数组转化为普通数组
-(id)arrayOrDicWithObject:(id)origin {
? ? if([originisKindOfClass:[NSArrayclass]]) {
? ? ? ? //数组
? ? ? ? NSMutableArray *array = [NSMutableArray array];
? ? ? ? for(NSObject*objectinorigin) {
? ? ? ? ? ? if([objectisKindOfClass:[NSStringclass]] || [objectisKindOfClass:[NSNumberclass]]) {
? ? ? ? ? ? ? ? //string , bool, int ,NSinteger
? ? ? ? ? ? ? ? [arrayaddObject:object];
? ? ? ? ? ? }elseif([objectisKindOfClass:[NSArrayclass]] || [objectisKindOfClass:[NSDictionaryclass]]) {
? ? ? ? ? ? ? ? //数组或字典
? ? ? ? ? ? ? ? [arrayaddObject:[selfarrayOrDicWithObject:(NSArray*)object]];
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? //model
? ? ? ? ? ? ? ? [arrayaddObject:[selfdicFromObject:object]];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return[arraycopy];
? ? }elseif([originisKindOfClass:[NSDictionaryclass]]) {
? ? ? ? //字典
? ? ? ? NSDictionary*originDic = (NSDictionary*)origin;
? ? ? ? NSMutableDictionary *dic = [NSMutableDictionary dictionary];
? ? ? ? for(NSString*keyinoriginDic.allKeys) {
? ? ? ? ? ? idobject = [originDicobjectForKey:key];
? ? ? ? ? ? if([objectisKindOfClass:[NSStringclass]] || [objectisKindOfClass:[NSNumberclass]]) {
? ? ? ? ? ? ? ? //string , bool, int ,NSinteger
? ? ? ? ? ? ? ? [dicsetObject:objectforKey:key];
? ? ? ? ? ? }elseif([objectisKindOfClass:[NSArrayclass]] || [objectisKindOfClass:[NSDictionaryclass]]) {
? ? ? ? ? ? ? ? //数组或字典
? ? ? ? ? ? ? ? [dicsetObject:[selfarrayOrDicWithObject:object]forKey:key];
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? //model
? ? ? ? ? ? ? ? [dicsetObject:[selfdicFromObject:object]forKey:key];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return[diccopy];
? ? }
? ? return[NSNullnull];
}
来至:https://blog.csdn.net/minggeqingchun/article/details/80280737