"all contains" does not work in a predicate, and (as far as I know) there is no similar syntax to get the desired result.
The following code creates a "compound predicate" from all "String" attributes in the entity:
NSString *searchText = @"john";
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:context];
NSMutableArray *subPredicates = [NSMutableArray array];
for (NSAttributeDescription *attr in [entity properties]) {
if ([attr isKindOfClass:[NSAttributeDescription class]]) {
if ([attr attributeType] == NSStringAttributeType) {
NSPredicate *tmp = [NSPredicate predicateWithFormat:@"%K CONTAINS[cd] %@", [attr name], searchText];
[subPredicates addObject:tmp];
}
}
}
NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:subPredicates];
NSLog(@"%@", predicate);
// firstName CONTAINS[cd] "john" OR lastName CONTAINS[cd] "john" OR middleName CONTAINS[cd] "john"