需求:一套試卷中有大量不同類型的題目,將題目快速分類處理。
一、初始化了一波假數據
- (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);