iOS 根据数组中model的某个属性值进行分组

根据model中的时间进行分组,重新构造数据,方便多个section的tableview使用。

NSArray *list = @[model1,model2,mode3.....];
 NSMutableDictionary *res = [NSMutableDictionary new];
        for (WSModel *mm in list)
        {
            if (res[mm.date]){
                [res[mm.date] addObject:obj];
            }
            else{
                res[mm.date] = [NSMutableArray arrayWithObject:obj];
            }
        }
        NSMutableArray *data = [NSMutableArray new];
        for (NSString *key in res.allKeys) {
            [data addObject:@{@"date":key,@"list":res[key]}];
        }

输出结果
{
date = "3月30日 周六";
list = (
"<WSModel: 0x283674fa0>"
);
},
{
date = "8月6日 周二";
list = (
"<WSModel: 0x2836446e0>"
);
},
{
date = "8月1日 周四";
list = (
"<WSModel: 0x2836448c0>",
"<WSModel: 0x283644960>"
);
},

补充说明,这样顺序可能会乱,需要把res.allkeys重新排下顺序

 NSArray *sortKeys =[res.allKeys sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
                return [obj1 compare:obj2];
   }];
  for (NSString *key in sortKeys) {
            [data addObject:@{@"date":key,@"list":res[key]}];
   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容