具有相同属性的字典的分组
//想要得到的效果:最后是一个总数组,含有两个数组,每个数组含有两个字典,两个字典中的price相同
NSMutableArray *myMutableArr = [[NSMutableArray alloc] init];
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等于1和3,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 allObjects] count];
//根据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 allObjects] objectAtIndex:i]]];
if (range.length != 0)
{
[tempArray addObject:dic];
}
}];
NSLog(@"tempArray = %@",tempArray);
//把得到的分组数组 合并成最终数组
[lastArray addObject:tempArray];
}
NSLog(@"最终的Array = %@",lastArray);
{
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;
}
)
)
浙公网安备 33010602011771号