iOS

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

2019-10-24  本文已影响0人  幻风0628

根据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]}];
   }
上一篇下一篇

猜你喜欢

热点阅读