ios数组按时间拆分添加到另外一个数组

数组通过time拆分新的数组(包含多个时间段的数组)

初始json数据如下:

{
  info_list : [
           { 
              id   :  110,
              time : "2016-6-20",
              name : "张三"
          },
         { 
              id   :  111,
              time : "2016-6-20",
              name : "李四"
          },
          { 
              id   :  112,
              time : "2016-6-21",
              name : "王五"
          },
           { 
              id   :  113,
              time : "2016-6-22",
              name : "赵六"
          }
  ]
}

改造后如下:

  {
  info_list : [
           [
              { 
               id   :  110,
               time : "2016-6-20",
               name : "张三"
              },
              { 
               id   :  111,
               time : "2016-6-20",
               name : "李四"
              }
            ],
            [
              { 
                id   :  112,
                time : "2016-6-21",
                name : "王五"
              }
            ],
            [
              { 
                id   :  113,
                time : "2016-6-22",
                name : "赵六"
              }
            ]
  ]
}

也就是数组中包含数组,多加了一层.

- (NSMutableArray *)arraySplitSubArrays:(NSArray *)array {
    // 数组去重,根据数组元素对象中time字段去重
    NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:0];
    for(ShoppingDetailsRecordModel *obj in array)
    {
        [dic setValue:obj forKey:[Tool timeStampWithtimeStr:obj.time dateFormat:@"yyyy-MM-dd"]];
    }
    
    NSMutableArray *tempArr = [NSMutableArray array];
    for (NSString *dictKey in dic) {
        [tempArr addObject:dictKey];
    }
    
    NSArray *sortedArray = [tempArr sortedArrayUsingSelector:@selector(compare:)];
    
    NSLog(@"排序后:%@",sortedArray);
    
    // 字典重不会有重复值,allKeys返回的是无序的数组
    NSLog(@"去重后字典:%@",[dic allKeys]);
    
    NSMutableArray *temps = [NSMutableArray array];
    for (NSString *dictKey in sortedArray) {
        
        NSMutableArray *subTemps = [NSMutableArray array];
        for (ShoppingDetailsRecordModel *obj in array) {
            
            if ([dictKey isEqualToString:[Tool timeStampWithtimeStr:obj.time dateFormat:@"yyyy-MM-dd"]]) {
                [subTemps addObject:obj];
            }
            
        }
        
        [temps addObject:subTemps];
    }
    
    // 排序后,元素倒序的,逆向遍历
    NSEnumerator *enumerator = [temps reverseObjectEnumerator];
    temps = (NSMutableArray*)[enumerator allObjects];
    
    ZLLog(@"temps:%@",temps);
    return temps;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 4.1、函数的基本使用 如果要修改数据最直接的使用函数就是update()函数,但是这个函数的语法要求很麻烦.语法...
    简人CC阅读 578评论 0 0
  • 第一个作业: 好好回想一下,小时候呆呆看过什么。挑选一个印象或一幅画面写出来。 回答: 小时候,家里经常停电。作业...
    sensen_667阅读 331评论 5 3
  • mysql X锁和S锁基本的封锁类型有两种: 排它锁(X锁)和共享锁(S锁): 所谓X锁,是事务T对数据A加上X锁...
    健身编码工阅读 9,566评论 0 0
  • 当你出门在外,徜徉于风景秀丽的各大景点,却突然发现荷包也在不断缩水,为了防止这种情况的发生,向大家提供以下妙招,让...
    启恒数码阅读 368评论 0 2