another slution

Addresscard composited from name and email and address =( unsigned long zip ,NSString city, NSString state ,NSString country) !
code for searchAll
-(NSIndexSet *)searchAll:(NSString *)string
{
NSIndexSet *result = [book indexesOfObjectsPassingTest:
^BOOL(id obj, NSUInteger idx, BOOL *stop)
{
NSRange nameRange = [[obj name] rangeOfString:string options:NSCaseInsensitiveSearch];
NSRange emailRange =[[obj email] rangeOfString:string options:NSCaseInsensitiveSearch];
Address *pes = [obj PersonAddress];
NSRange cityRange = [[pes city] rangeOfString:string options:NSCaseInsensitiveSearch];
NSRange stateRange = [[pes state] rangeOfString:string options:NSCaseInsensitiveSearch];
NSRange countryRange =[[pes country] rangeOfString:string
options:NSCaseInsensitiveSearch];
if (nameRange.location != NSNotFound)
return YES;
else if (emailRange.location != NSNotFound)
return YES;
else if ([pes zip] ==(long) [string integerValue])
return YES;
else if (cityRange.location !=NSNotFound)
return YES;
else if (stateRange.location !=NSNotFound)
return YES;
else if (countryRange.location !=NSNotFound)
return YES;
else
return NO;
}];
return result;