将数组中的数据快速分组
需求:一套试卷中有大量不同类型的题目,将题目快速分类处理。
一、初始化了一波假数据
- (void)setupQuestions { for (int i = 0; i < 10; i++) {
HXQuestionModel *qModel = [[HXQuestionModel alloc]init];
if (i%2 == 0) {
qModel.qType = @"X型题";
}else if (i%3 == 0) {
qModel.qType = @"Y型题";
}else if (i%5 == 0) {
qModel.qType = @"Z型题";
}else {
qModel.qType = @"默认题型";
}
[_questionsArray addObject:qModel];
} }
解决方式:
1.首先获取试卷中题目的类型
获取题目类型
NSArray *indexArray = [_questionsArray valueForKey:@"qType"];
// 将array装换成NSSet类型 除重
NSSet *indexSet = [NSSet setWithArray:indexArray];
NSLog(@"%@",indexSet);
2.根据所选条件筛选数据
NSMutableArray *filerResultArr = [NSMutableArray array];
[indexSet enumerateObjectsUsingBlock:^(id _Nonnull obj, BOOL * _Nonnull stop) { NSLog(@"%@",obj);
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"qType == %@",obj]; NSArray *subArr = [_questionsArray filteredArrayUsingPredicate:predicate]; [filerResultArr addObject:subArr];
}];
NSLog(@"%@",filerResultArr);