1、 说明:以下程序中NSMutableArray数组中包含的对象是NSDictionary,而下面要实现的排序就是根据NSDictionary中的key代表的value进行比较而排序,如下:
code
//1.对字段的封装 - (NSDictionary *)formateDicWithName:(NSString *)name value:(NSNumber *)value color:(UIColor *)color { return [NSDictionary dictionaryWithObjectsAndKeys: name,@"name", value,@"value", color,@"color",nil]; } |
//2.准备数据 NSMutableArray *result = [NSMutableArray arrayWithCapacity:0]; NSDictionary *deptBal = [self formateDicWithName:@"储蓄余额" value: [NSNumber numberWithFloat:30] color:[UIColor redColor]]; [result addObject:deptBal];
NSDictionary *finBal = [self formateDicWithName:@"理财产品余额" value: [NSNumber numberWithFloat:20] color: [UIColor yellowColor]]; [result addObject:finBal];
NSDictionary *debtBal = [self formateDicWithName:@"国债余额" value: [NSNumber numberWithFloat:40] color: [UIColor blueColor]]; [result addObject:debtBal];
NSDictionary *fundBal = [self formateDicWithName:@"基金市值" value: [NSNumber numberWithFloat:10] color: [UIColor blackColor]]; [result addObject:fundBal]; |
//3.实现排序 NSArray *newResult = [result sortedArrayUsingComparator:^(id obj1,id obj2) { NSDictionary *dic1 = (NSDictionary *)obj1; NSDictionary *dic2 = (NSDictionary *)obj2; NSNumber *num1 = (NSNumber *)[dic1 objectForKey:@"value"]; NSNumber *num2 = (NSNumber *)[dic2 objectForKey:@"value"]; if ([num1 floatValue] > [num2 floatValue]) { return (NSComparisonResult)NSOrderedAscending; } else { return (NSComparisonResult)NSOrderedDescending; } return (NSComparisonResult)NSOrderedSame; }]; |
经过1、2、3三个操作得到的数组newResult,就是根字典NSDictionary中的value所代表的值进行由大到小排序的数组。