i have an array of dictionay in the following format
[
{
\"student\": {
\"id\": \"1\",
\"studentUserDetail\": {
\"firstName
NSPredicate *filter = [NSPredicate predicateWithFormat:@"student.studentUserDetail.firstName CONTAINS[cd] %@ ", searchString];
worked perfectly for me
NSString *name = @"Bonny";
NSPredicate *pred = [NSPredicate predicateWithFormat:
@"student.studentUserDetail.firstName == %@", name];
NSArray *arr = [self.anArray filteredArrayUsingPredicate:pred];
NSLog(@"Bonny found at : %@", arr);
Edit:
If you want to search based on a pattern, then use:
NSPredicate *pred = [NSPredicate predicateWithFormat:
@"student.studentUserDetail.firstName beginswith[cd] %@", name];
NSArray *array = @[
@{
@"student": @{
@"id": @"1",
@"studentUserDetail": @{
@"firstName": @"Bonny",
@"lastName": @"Roby"
}
}
},
@{@"student": @{
@"id": @"1",
@"studentUserDetail": @{
@"firstName": @"Bonny",
@"lastName": @"Kety"
}
}
},
@{
@"student": @{@"id": @"1",
@"studentUserDetail": @{
@"firstName": @"Arther",
@"lastName": @"Fone"
}
}
}];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(student.studentUserDetail.firstName) == %@", @"Bonny"];
NSArray *newArray = [array filteredArrayUsingPredicate:predicate];