美文网首页基础
NSArray 分组归类

NSArray 分组归类

作者: ocean_wave | 来源:发表于2016-05-23 11:35 被阅读433次

    NSArray 分组归类

    使用场景:

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

    (
            {
            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 分组归类

        本文链接:https://www.haomeiwen.com/subject/cwearttx.html