0

我有一系列带有类别的选项字典。我希望选项位于该类别下。截至目前,我的类别正在重复我的选项添加了多少次。

鉴于这种:

(
        {
        multiOptnCatId = 4;
        multiOptnItem = 1344;
    },
        {
        multiOptnCatId = 7;
        multiOptnItem = 2253;
    },
        {
        multiOptnCatId = 4;
        multiOptnItem = 1343;
    },
        {
        multiOptnCatId = 4;
        multiOptnItem = 1346;
    },
        {
        multiOptnCatId = 4;
        multiOptnItem = 1342;
    },
        {
        multiOptnCatId = 4;
        multiOptnItem = 1345;
    }
)

我可以将其转换为的有效方法是什么:

(
        {
        multiOptnCatId = 4;
        multiOptnItem = (1342, 1343, 1344, 1345, 1346);
    },
        {
        multiOptnCatId = 7;
        multiOptnItem = (2253);
    }
)

感谢你们!:)

4

1 回答 1

2
NSArray *array = ...; // your input array

// All categories as array:
NSArray *catArray = [array valueForKey:@"multiOptnCatId"];
// All categories as set (to remove duplicates):
NSSet *catSet = [NSSet setWithArray:catArray];

NSMutableArray *rearranged = [NSMutableArray array];
// For all categories ...
for (NSString *cat in catSet) {
    // Get matching dictionaries for this category:
    NSArray *filtered = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"multiOptnCatId = %@", cat]];
    // Get "multiOptnItem" values for this category:
    NSArray *items = [filtered valueForKey:@"multiOptnItem"];
    // Add category + multiOptnItem values to rearranged array:
    [rearranged addObject:@{@"multiOptnCatId":cat, @"multiOptnItem":items}];
}
于 2013-08-15T07:24:11.723 回答