您的位置:首页 > 其它

NSArray 分组归类

2016-03-31 12:36 211 查看

NSArray 分组归类

使用场景:

根据NSArray中NSDictionary的一个键值,将NSArray重新分组,例如:后台返回一个json数据

(
{
index = 4;
name = MyProduct1;
},
{
index = 10;
name = MyProduct2;
},
{
index = 18;
name = MyProduct3;
},
{
index = 4;
name = MyProduct8;
},
{
index = 18;
name = MyProduct6;
}
)


现在要将index相同的数据放在一类中

实现代码

// 测试array
NSArray *testArray = @[
@{
@"name": @"MyProduct1",
@"index": @4
},
@{
@"name": @"MyProduct2",
@"index": @10
},
@{
@"name": @"MyProduct3",
@"index": @18
},
@{
@"name": @"MyProduct8",
@"index": @4
},
@{
@"name": @"MyProduct6",
@"index": @18
}
];
// 获取array中所有index值
NSArray *indexArray = [testArray valueForKey:@"index"];
// 将array装换成NSSet类型
NSSet *indexSet = [NSSet setWithArray:indexArray];
// 新建array,用来存放分组后的array
NSMutableArray *resultArray = [NSMutableArray array];
// NSSet去重并遍历
[[indexSet allObjects] enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
// 根据NSPredicate获取array
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"index == %@",obj];
NSArray *indexArray = [testArray filteredArrayUsingPredicate:predicate];

// 将查询结果加入到resultArray中
[resultArray addObject:indexArray];
}];


最终结果

(
(
{
index = 18;
name = MyProduct3;
},
{
index = 18;
name = MyProduct6;
}
),
(
{
index = 10;
name = MyProduct2;
}
),
(
{
index = 4;
name = MyProduct1;
},
{
index = 4;
name = MyProduct8;
}
)
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nsarray