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