在项目业务开发过程中遇到个需求,对用户所选择的时间点进行排序及合并处理,小记一下,作为备忘,代码如下:
\**
\* 对时间段的相邻时段合并处理
\* @param timeArray 需要处理的时间段
\* @return 处理完的时间段
*/
+(NSMutableArray *)processSelectedTime:(NSMutableArray *)timeArray{
NSMutableArray *selectTimeArray = [NSMutableArray array];
for (NSString *string in timeArray) {
[selectTimeArray addObject:[NSNumber numberWithInteger:[string integerValue]]];
}
[selectTimeArray sortUsingSelector:@selector(compare:)];
//合并后的时间字符串
NSString* mergeTimeStr;
//选择的时间段合并处理后的数组
NSMutableArray* timeStrArray;
//二维数组可解决这个问题
NSMutableArray* data = [[NSMutableArray alloc]init];
for (int i = 0; i < selectTimeArray.count; i++) {
NSMutableArray* tmps = [[NSMutableArray alloc]init];
[tmps addObject:selectTimeArray[i]];
if (i == selectTimeArray.count - 1) {
[data addObject:tmps];
break;
}
int position = i;
NSInteger tmpData = [selectTimeArray[i] integerValue] + 1;
while (YES) {
position++;
if (position<selectTimeArray.count && tmpData == [selectTimeArray[position] integerValue]) {
[tmps addObject:selectTimeArray[position]];
i = position;
}else{
break;
}
tmpData = [selectTimeArray[position] integerValue] + 1;
}
[data addObject:tmps];
}
// NSLog(@"%@",data);
NSMutableArray *crr = [[NSMutableArray alloc] init];
timeStrArray = [[NSMutableArray alloc]init];
NSLog(@"--data二维数组--%@----",data);
for (int i = 0; i < data.count; i++) {
NSLog(@"----%@-----遍历data二维数组并打印",data[i]);
crr = data[i];
//合并时间段后的时间段数组
mergeTimeStr = [NSString stringWithFormat:@"%ld:00-%zd:00",(long)[crr[0] integerValue],[crr[0] integerValue] + crr.count];
[timeStrArray addObject:mergeTimeStr];
}
NSLog(@"---timeStrArray---%@-----",timeStrArray);
return timeStrArray;
}
网友评论