iOS tableView動態創建分組及組內排序

#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;

    }

}


實現效果如圖所示:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章