您的位置:首页 > 其它

NSMutableArray复杂对象排序

2015-11-25 13:58 337 查看
今天在写程序的时候需要对NSMutableArray中的复杂对象排序,一时不知如何下手,在百度上谷歌后得到以下解决方案:
方案说明
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所代表的值进行由大到小排序的数组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: