Filter Array with dictionaries using NSPredicate

lu yuan picture lu yuan · Aug 23, 2012 · Viewed 22.4k times · Source

There is an Array with each element being a NSDictionary.

NSMutableArray *mutArr = [NSMutableArray array];

for (Person *person in persons) {
    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:person.name, @"name", person.email, @"email", nil];
    [mutArr addObject:dict];
}

self.arr = [[NSArray alloc] initWithArray:mutArr];

How to filer the arr with name or email contains string @"filter string" by using filterArrayUsingPredicate: method.

Thanks in advance!

Answer

Nitin picture Nitin · Aug 23, 2012

Please see the below example:

 NSArray *array = [NSArray arrayWithObject:[NSMutableDictionary dictionaryWithObject:@"filter string" forKey:@"email"]];   // you can also do same for Name key... 
    NSArray *filteredarray = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(email == %@)", @"filter string"]];