在APP开发中经常碰到这种情况,后台给的数据需要我们按照某种条件分组。比如我的项目中:需要把数组中的数据按照时间分类分组,同一天的数据放在一起比如8-20号的数据分一组,8-21号的数据分一组。代码如下:
#import "ViewController.h"
#import "model.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
{
NSMutableArray *userModelArr;
NSMutableArray *tempArray;
NSMutableArray *_dateArr;
NSMutableArray *timeArr;
NSArray * arrrrrrrrrr;
}
@property(nonatomic,strong)UITableView *tableView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"会议";
_tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] bounds] style:UITableViewStylePlain];
_tableView.dataSource = self;
_tableView.delegate = self;
[self.view addSubview:_tableView];
[self shuju];
}
-(void)shuju
{
tempArray = [NSMutableArray array];
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://dev.brc.com.cn:8085/api/meeting/list?access_token=1b5e8731e5ff44928991b3098fe52464&type=32&showrows=10&page=1"];
// 通过URL初始化task,在block内部可以直接对返回的数据进行处理
NSURLSessionTask *task =[session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError* error) {
NSDictionary *dic = [NSDictionary dictionaryWithDictionary:[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]];
NSLog(@"999%@22",dic);
id jsonArr = dic[@"data"];
NSMutableArray *allTimeArr = [NSMutableArray array];
for (NSDictionary *ordersDic in jsonArr) {
//1.取出所有出现得时间
[allTimeArr addObject:[ordersDic[@"starttime"] substringToIndex:10]];
}
arrrrrrrrrr = [self arrayWithMemberIsOnly:allTimeArr];
NSLog(@"%@",arrrrrrrrrr);
for (NSString *nowTim in arrrrrrrrrr) {
NSMutableArray *arr = [[NSMutableArray alloc] init];
for (NSDictionary *ordersDicTwo in jsonArr) {
NSString *twoTim = [ordersDicTwo[@"starttime"] substringToIndex:10];
if([twoTim isEqualToString:nowTim]){
//2.将每个字典保存在模型数组中
model *tianjianModel = [[model alloc]init];
[tianjianModel setValuesForKeysWithDictionary:ordersDicTwo];
[arr addObject:tianjianModel];
}
}
[tempArray addObject:arr];
}
[_tableView reloadData];
}];
[task resume];
// });
}
// 告诉TableView对应的Section要显示几行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSArray *arr = tempArray[section];
return arr.count;
}
// 告诉TableView要显示什么内容,当Cell显示的时候就会调用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
NSArray *arr = tempArray[indexPath.section];
model *cellModel = arr[indexPath.row];
cell.textLabel.text = cellModel.title;
return cell;
}
// 返回分组(Section)数 Section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return tempArray.count;
}
// 返回组头部的Title
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [NSString stringWithFormat:@"第%ld组", section];
}
// 返回组头部(段头)的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 30;
}
//去除数组中重复的
-(NSArray *)arrayWithMemberIsOnly:(NSArray *)array
{
NSMutableArray *categoryArray =[[NSMutableArray alloc] init];
for (unsigned i = 0; i < [array count]; i++) {
@autoreleasepool {
if ([categoryArray containsObject:[array objectAtIndex:i]]==NO) {
[categoryArray addObject:[array objectAtIndex:i]];
}
}
}
return categoryArray;
}