这个问题是以前面试的时候,在最后一关的时候,只需要做出来,就可以入职了,可可惜老子做不出来,心里纠结,想了想,还是要写出来。
NSMutableSet *set=[NSMutableSet set];
NSMutableArray * _datas = [[NSMutableArray alloc] initWithCapacity:0];
[selectArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[set addObject:obj[@"shopid"]];//利用set不重复的特性,得到有多少组,根据数组中的MeasureType字段
}];
[set enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {//遍历set数组
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"shopid = %@", obj];//创建谓词筛选器
NSArray *group = [selectArray filteredArrayUsingPredicate:predicate];
[_datas addObject:group];
NSLog(@"数组--%@",group);
}];
以上这个比较复杂一点,我写个很理解的:
//这个可以是你请求的数据,数据格式是[{},{},{}];这种,里面是一堆无序的字典元素;
NSMutableArray * shopListArray = [[ NSMutableArray alloc ] initWithCapacity : 0 ];
NSMutableSet *set=[NSMutableSet set];
//其实中间(下面这段语句不知道有什么用)
[shopListArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[set addObject:obj[@"truename"]];//利用set不重复的特性,得到有多少组,根据数组中的MeasureType字段
}];
[set enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {//遍历set数组
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"truename = %@", obj];//创建谓词筛选器
//同类字典元素组成的数组;
NSArray *group = [shopListArray filteredArrayUsingPredicate:predicate];
//rangArray就是获取到的同类字典元素组成的数组,然后此类数组作为元素组成的数组;
[rangArray addObject:group];
NSLog(@"数组--%@",group);
NSLog(@"分组- %@",rangArray);
}];