注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

IOS & JAVA KEY

(iMilo)

 
 
 

日志

 
 
关于我

All the splendor in the world is not worth a good friend!! Hello my friend!!

网易考拉推荐

NSMutableArray复杂对象排序  

2011-11-15 22:13:28|  分类: IOS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

引入

今天在写程序的时候需要对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;

        }];

经过123三个操作得到的数组newResult,就是根字典NSDictionary中的value所代表的值进行由大到小排序的数组。

 

其他

iMilo

2011/11/15

 

 

  评论这张
 
阅读(3437)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017