iOS tableView动态创建分组及组内排序

来源:互联网 发布:淘宝天堂伞假货 编辑:程序博客网 时间:2024/05/02 02:53

#pragma mark - 判断分组数,并且按上传时间和检查时间降序排列

-(void)analyseHDCData{

    //1.数组内部元素排序

    NSArray *sortDesc = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"createTime" ascending:NO]];

   NSArray *sortedArr = [hdcDatasArray sortedArrayUsingDescriptors:sortDesc];

    

    //2.对数组进行分组,按createTime,创建组数组,组数组中的每一个元素是一个数组

    NSMutableArray *groupArray = [NSMutableArray array];

    NSMutableArray *currentArray = [NSMutableArray array];

   

    //因为肯定有一个元素返回,先添加一个

    [currentArray addObject:sortedArr[0]];

    [groupArray addObject:currentArray];

    

    //如果不止一个,才要动态添加

   if(sortedArr.count >1){

       for (int i =1; i < sortedArr.count; i++) {

           NSMutableArray *preModelArr = [groupArray objectAtIndex:groupArray.count-1];

           // 先取出组数组中,上一个数组的第一个元素

           HdcDataDto *hdcDto=[preModelArr objectAtIndex:0];

           //取出当前元素,根据createTime比较,如果相同则添加到同一个组中;如果不相同,说明不是同一个组的

           HdcDataDto *hdcDtoTmp=[sortedArr objectAtIndex:i];


 if ([self compareCreateTime:hdcDto.createTime secondTime:hdcDtoTmp.createTime]){

                [currentArray addObject:hdcDtoTmp];

            }else{

                // 如果不相同,说明有新的一组,那么创建一个元素数组,并添加到组数组groupArr

                currentArray = [NSMutableArray array];

                [currentArray addObject:hdcDtoTmp];

                [groupArray addObject:currentArray];

            }

        }

    }

    // 3、遍历对每一组进行排序

   hdcDatasGroup=groupArray;

}


#pragma mark - 比较上传时间

-(BOOL)compareCreateTime:(NSString *)firstTime secondTime:(NSString *)secondTime{

    NSDateFormatter *df = [[NSDateFormatter alloc]init];

    [df setLocale:[[NSLocalealloc]initWithLocaleIdentifier:@"zh_CN"]];

    [df setDateFormat:@"yyyy-MM-dd"];

    

   NSDate *time1 = [NSDate timeStampTransformToDate:firstTime];

   NSString *timeStr1=[df stringFromDate:time1];


   NSDate *time2 = [NSDate timeStampTransformToDate:secondTime];

   NSString *timeStr2=[df stringFromDate:time2];


   if ([timeStr1 isEqualToString:timeStr2]) {

       returnYES;

    }else{

       returnNO;

    }

}


实现效果如图所示:



0 0
原创粉丝点击