// model模型轉(zhuǎn)字典 實(shí)現(xiàn)代碼
-(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返回的數(shù)字和字符串都是對(duì)象
? ? ? ? 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數(shù)組轉(zhuǎn)化為普通數(shù)組
-(id)arrayOrDicWithObject:(id)origin {
? ? if([originisKindOfClass:[NSArrayclass]]) {
? ? ? ? //數(shù)組
? ? ? ? NSMutableArray *array = [NSMutableArray array];
? ? ? ? for(NSObject*objectinorigin) {
? ? ? ? ? ? if([objectisKindOfClass:[NSStringclass]] || [objectisKindOfClass:[NSNumberclass]]) {
? ? ? ? ? ? ? ? //string , bool, int ,NSinteger
? ? ? ? ? ? ? ? [arrayaddObject:object];
? ? ? ? ? ? }elseif([objectisKindOfClass:[NSArrayclass]] || [objectisKindOfClass:[NSDictionaryclass]]) {
? ? ? ? ? ? ? ? //數(shù)組或字典
? ? ? ? ? ? ? ? [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]]) {
? ? ? ? ? ? ? ? //數(shù)組或字典
? ? ? ? ? ? ? ? [dicsetObject:[selfarrayOrDicWithObject:object]forKey:key];
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? //model
? ? ? ? ? ? ? ? [dicsetObject:[selfdicFromObject:object]forKey:key];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return[diccopy];
? ? }
? ? return[NSNullnull];
}
來至:https://blog.csdn.net/minggeqingchun/article/details/80280737