iOS开发 服务器请求出来的数据按日期重新分组

在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;
}

时间: 2025-01-08 21:19:11

iOS开发 服务器请求出来的数据按日期重新分组的相关文章

iOS开发网络篇—发送json数据给服务器以及多值参数

iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8 9 - (void)viewDidLoad 10

Android开发使用GET方式向服务器请求和发送数据

#1.首先先用新建个servlet处理登陆请求 代码如下.只实现了doGet方法 package com.wzw.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSe

Android开发使用POST方式向服务器请求和发送数据

前面说了GET方式.现在尝试一下POST #1.首先先用新建个servlet处理登陆请求 package com.wzw.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Ht

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

Android与iOS开发对比系列】之 数据存储

Android与iOS开发对比系列]之 数据存储 写在前面的话 相比Android和iOS,我觉得Android的数据存储更开放一些.Android天生就可以使用多Java I/O:并且天生开放的特性,开发者可以直接在SD卡中读写文件,自由度比较高.缺点吗,也是因为太开放,所以Android的相册和文件夹都惨不忍睹. Android本身自带Java的反射和注解,很早就有了ORM数据库.这里解释一下,ORM就是 Object Relation Mapping, 对象关系映射. 通过建立对象来生成数

李洪强漫谈iOS开发[C语言-043]-判断较早日期

李洪强漫谈iOS开发[C语言-043]-判断较早日期

iOS开发网络请求——大文件的多线程断点下载

iOS开发中网络请求技术已经是移动app必备技术,而网络中文件传输就是其中重点了.网络文件传输对移动客户端而言主要分为文件的上传和下载.作为开发者从技术角度会将文件分为小文件和大文件.小文件因为文件大小比较小导致传输所需时间少传输就快,因此不太容易影响用户体验,可用的技术就多.而大文件因为文件大小比较大导致传输时间长,因此就需要考虑到各种用户体验,比如避免在上传下载文件过程中阻塞主线程影响用户体验,就需要使用到多线程技术:为了给用户友好的进度提示,因此又需要开发中跟踪数据上传和下载数据的变化:为

iOS开发-HTTP请求

什么是URL?URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URLURL的基本格式: URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// http协议是在网络开发中最常用的协议 (2)file 访问的是本地计算机上的资源,格式是file://(不用加主机地址) (3)mailto 访问的是电子邮件地址,格式是mailto: (4)FTP 访问的是共享主机的文件资源,格式是ftp:// HTTP请求示例,返回JSON // 1.拼接一个请

IOS开发 REST请求 ASIHTTPRequest用法

ASIHTTPRequest类库简介和使用说明 官方网站: http://allseeing-i.com/ASIHTTPRequest/ .可以从上面下载到最新源码,以及获取到相关的资料. 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRequest适用于基本