Here's some test code I wrote for you. Enjoy :)
- (void)filterCategories
{
NSMutableDictionary *categoryTableArray = [@{@"Generation 2": @[@{@"id": @(34), @"name": @"Footwear"}],
@"Generation 3": @[@{@"id": @(53), @"name": @"Party"}],
@"Generation 5": @[@{@"id": @(72), @"name": @"hash1"},
@{@"id": @(86), @"name": @"uhgyututyutguhgjhbj"}]} mutableCopy];
NSArray *deleteList = @[@{@"id": @(72)},
@{@"id": @(53)}];
NSLog(@"Before deletion:\n%@", categoryTableArray);
[self deletIDs:deleteList fromCategories:categoryTableArray];
NSLog(@"After deletion:\n%@", categoryTableArray);
}
- (void)deletIDs:(NSArray *)deleteList fromCategories:(NSMutableDictionary *)categories
{
// Convert the array of dictionaries into just an array of IDs.
NSArray *ids = [deleteList valueForKeyPath:@"id"];
for (NSString *key in [categories allKeys])
{
categories[key] = [categories[key] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"NOT id IN %@", ids]];
}
}