您的位置:首页 > 其它

NSMutableArray复杂对象排序

2016-07-26 09:05 435 查看
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所代表的值进行由大到小排序的数组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: