iOS 开发 根据数组里面对象的某个属性进行分组

2017-05-10  本文已影响1168人  iOS刘耀宗

这次开发中,有这么一个问题,后台返回的数据并没有做处理,需要移动端对数组里面的对象按照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  有单子也可找我一起做哦

上一篇 下一篇

猜你喜欢

热点阅读