這次開發(fā)中,有這么一個問題,后臺返回的數據并沒有做處理,需要移動端對數組里面的對象按照ID來進行分組,通俗的講就是要把ID一樣的對象放在一個數組里面.分離開來.
大致講講實現(xiàn)的思路: ? 數組里面很多的對象的ID都是一樣的,首先我們需要把數組里面進行去重處理,也就是說把ID不一樣的元素取出一個裝到一個數組里面,作為后面區(qū)分開來的一句.然后把原數組和去重數組進行雙重遍歷.便可把ID相同的放到一個數組. 可直接拷貝下面代碼 ? 程序實現(xiàn)如下:
//課程? 文件
//將ID一樣的分離出來
NSMutableArray *LessonArr=[NSMutableArray array];
[dataArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSDictionary *currentDict=obj;
NSString *LessonID=[currentDict objectForKey:@"LessonID"];//根據課程的ID進行區(qū)分
[LessonArr addObject:LessonID];
}];
//使用asset把LessonArr的對象去重
NSSet *set = [NSSet setWithArray:LessonArr];
NSArray *userArray = [set allObjects];
NSSortDescriptor *sd1 = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO];//yes升序排列,no,降序排列
//按ID降序排列的數組
NSArray *myary = [userArray sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd1, nil]];
//此時得到的myary就是按照ID ? 降序排列拍好的數組
NSMutableArray *? _titleArray=[NSMutableArray array];
//遍歷myary把_titleArray按照myary里的時間分成幾個組每個組都是空的數組
[myary enumerateObjectsUsingBlock:^(id? _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSMutableArray *arr=[NSMutableArray array];
[_titleArray addObject:arr];
}];
//遍歷_dataArray取其中每個數據的ID看看與myary里的那個ID匹配就把這個數據裝到_titleArray 對應的組中
[dataArray enumerateObjectsUsingBlock:^(id? _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSDictionary *currentDict=obj;//取出對象
NSString *LessonID=[currentDict objectForKey:@"LessonID"];
for (NSString *str in myary)
{
if([str integerValue] ==[LessonID integerValue])//檢測ID是否是一樣的
{
NSMutableArray *arr=[_titleArray objectAtIndex:[myary indexOfObject:str]];
[arr addObject:currentDict];//是的話就添加到數組里面
}
}
}];
NSLog(@"當前的數組是%@",_titleArray);
承接APP,小程序,公眾號開發(fā). 性價比高.+V信:17723566468 ?有單子也可找我一起做哦