I have an NSArray of NSDictionary objects which I would like to be able to return a new array of NSDictionaries from, where every NSDictionary has \"Area == North\" (for exa
NSPredicate should work fine, I tried this:
NSMutableArray *a = [NSMutableArray array];
[a addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"North", @"Area", @"North", @"Test", nil]];
[a addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"South", @"Area", @"North", @"Test", nil]];
[a addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"East", @"Area", @"North", @"Test", nil]];
NSPredicate *p = [NSPredicate predicateWithFormat:@"%K matches %@", @"Area", @"North"];
NSArray *newArray = [a filteredArrayUsingPredicate:p];
NSLog(@"newArray:%@", [newArray description]);
It works.
Sounds easy enough:
NSArray *unfilteredDictionaries; // however you get this...
NSMutableArray *filteredDictionaries =
[NSMutableArray arrayWithCapacity:[unfilteredDictionaries count]];
NSDictionary *dict;
for (dict in unfilteredDictionaries)
if ([[dict valueForKey:@"Area"] isEqualToString:@"North"])
[filteredDictionaries addObject:dict];
return filteredDictionaries;