首页 > 其他 > 详细

具有相同属性的字典的分组

时间:2014-03-14 18:45:57      阅读:607      评论:0      收藏:0      [点我收藏+]

//想要得到的效果:最后是一个总数组,含有两个数组,每个数组含有两个字典,两个字典中的price相同
    
    
NSMutableArray *myMutableArr = [[NSMutableArray allocinit];
    
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"price",@"2",@"number"nil];
    
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"3",@"price",@"5",@"number"nil];
    
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"3",@"price",@"1",@"number"nil];
    
NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"price",@"3",@"number"nil];
    [myMutableArr 
addObject:dic1];
    [myMutableArr 
addObject:dic2];
    [myMutableArr 
addObject:dic3];
    [myMutableArr 
addObject:dic4];
    
NSLog(@"myMutableArr = %@",myMutableArr);
    
    
//剔选出price不同的值,并组成数组
    
//本例中price等于13,arr = (1,3)
    
NSNumber * number;
    
NSMutableArray * priceArray= [[NSMutableArray alloc]init];
    
for (int i = 0; i<[myMutableArr count]; i++)
    {
         number = [[myMutableArr 
objectAtIndex:i] valueForKey:@"price"];
        [priceArray 
addObject:number];
    }
    
NSSet *set = [NSSet setWithArray:priceArray];
    
NSLog(@"priceArray = %@",[set allObjects]);
    
NSInteger cout = [[set allObjectscount];

    
//根据arr数值的不同  得到price相同的分组
    
NSMutableArray *lastArray = [[NSMutableArray alloc]init];//初始化最终的Array

    
for (int i = 0; i<cout; i++)
    {
        
__block  NSMutableArray * tempArray = [NSMutableArray arrayWithCapacity:0];
        [myMutableArr 
enumerateObjectsUsingBlock:^(NSDictionary * dic, NSUInteger idx, BOOL *stop) {
            
            
NSString * name = [dic valueForKey:@"price"];
            
NSRange range = [name rangeOfString:[NSString stringWithFormat:@"%@",[[set allObjectsobjectAtIndex:i]]];
            
if (range.length != 0)
            {
                [tempArray 
addObject:dic];
            }
            
        }];
        
NSLog(@"tempArray = %@",tempArray);
        
        
//把得到的分组数组 合并成最终数组
        [lastArray 
addObject:tempArray];
    }
    
    
NSLog(@"最终的Array = %@",lastArray);

 
 
//最初的数组
2014-02-14 14:46:09.598 123456[1596:c07] myMutableArr = (
        {
        number = 2;
        price = 1;
    },
        {
        number = 5;
        price = 3;
    },
        {
        number = 1;
        price = 3;
    },
        {
        number = 3;
        price = 1;
    }
)

//最终的数组
2014-02-14 14:46:09.601 123456[1596:c07] 
最终的Array = (
        (
                {
            number = 5;
            price = 3;
        },
                {
            number = 1;
            price = 3;
        }
    ),
        (
                {
            number = 2;
            price = 1;
        },
                {
            number = 3;
            price = 1;
        }
    )
)

具有相同属性的字典的分组,布布扣,bubuko.com

具有相同属性的字典的分组

原文:http://www.cnblogs.com/tanwen1989/p/3598923.html

(0)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!