这次开发中,有这么一个问题,后台返回的数据并没有做处理,需要移动端对数组里面的对象按照ID来进行分组,通俗的讲就是要把ID一样的对象放在一个数组里面.分离开来.
大致讲讲实现的思路: 数组里面很多的对象的ID都是一样的,首先我们需要把数组里面进行去重处理,也就是说把ID不一样的元素取出一个装到一个数组里面,作为后面区分开来的一句.然后把原数组和去重数组进行双重遍历.便可把ID相同的放到一个数组. 可直接拷贝下面代码 程序实现如下:
//课程 文件
//将ID一样的分离出来
NSMutableArray *LessonArr=[NSMutableArray array];
[dataArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSDictionary *currentDict=obj;
NSString *LessonID=[currentDict objectForKey:@"LessonID"];//根据课程的ID进行区分
[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,小程序,公众号开发. 性价比高.+V信:17723566468 有单子也可找我一起做哦