主要排序代码如下:
使用冒泡算法进行对日期和时间的排序,在AttenceTimelineCell基础上添加分段:
#pragma mark-对日期进行分类
- (NSMutableArray *)siftArray:(NSMutableArray *)mArray{
NSMutableArray *resultArray = [NSMutableArray array];
for (int i = 0; i < mArray.count; i++) {
DataModel *iModel = mArray[i];
NSString *modelDate = [iModel.expense_time substringToIndex:10];
// 加入数组
NSMutableArray *tempArray = [NSMutableArray array];
[tempArray addObject:iModel];
for (int j = i + 1; j < mArray.count; j++) {
DataModel *jModel = mArray[j];
NSString *jModelDate = [jModel.expense_time substringToIndex:10];
if ([modelDate isEqualToString:jModelDate]) {
[tempArray addObject:jModel];
}
}
if (tempArray.count > 0) {
//对日期进行排序,从最近到最远
tempArray=[self sortDateWithArray:tempArray sortType:ZWSortType_Asc];
[resultArray addObject:tempArray];
resultArray = [self sortDayWithArray:resultArray sortType:ZWSortType_Asc];
[mArray removeObjectsInArray:tempArray];
i--;
}
}
return resultArray;
}
#pragma Mark-对日期进行排序
-(NSMutableArray *)sortDayWithArray:(NSMutableArray *)msArray sortType:(ZWSortType)type{
switch (type) {
//降序
case ZWSortType_Asc:
{
for (int i = 0; i < msArray.count; i++) {
DataModel *date1 = msArray[i][0];
for (int j = i + 1; j < msArray.count; j++) {
DataModel *date2 = msArray[j][0];
if ([self compareDate:date1.expense_time withModelDate:date2.expense_time]) {
[msArray exchangeObjectAtIndex:j withObjectAtIndex:i];
}
}
}
}
//升序
case ZWSortType_Order:
{
for (int i = 0; i < msArray.count; i++) {
DataModel *date1 = msArray[i][0];
for (int j = i + 1; j < msArray.count; j++) {
DataModel *date2 = msArray[j][0];
if (![self compareDate:date1.expense_time withModelDate:date2.expense_time]) {
[msArray exchangeObjectAtIndex:j withObjectAtIndex:i];
}
}
}
}
break;
default:
break;
}
return msArray;
}
#pragma mark -对时间进行排序
-(NSMutableArray *)sortDateWithArray:(NSMutableArray *)msArray sortType:(ZWSortType)type{
switch (type) {
//降序
case ZWSortType_Asc:
{
for (int i = 0; i < msArray.count; i++) {
DataModel *model1 = msArray[i];
for (int j = i + 1; j < msArray.count; j++) {
DataModel *model2 = msArray[j];
if ([self compareDate:model1.expense_time withModelDate:model2.expense_time]) {
[msArray exchangeObjectAtIndex:j withObjectAtIndex:i];
}
}
}
}
break;
//升序
case ZWSortType_Order:
{
for (int i = 0; i < msArray.count; i++) {
DataModel *model1 = msArray[i];
for (int j = i + 1; j < msArray.count; j++) {
DataModel *model2 = msArray[j];
if (![self compareDate:model1.expense_time withModelDate:model2.expense_time]) {
[msArray exchangeObjectAtIndex:j withObjectAtIndex:i];
}
}
}
}
break;
default:
break;
}
return msArray;
}
效果如下: