NSPredicate that is the equivalent of SQL's LIKE
IphoneCocoaCocoa TouchCore DataNspredicateIphone Problem Overview
I'm looking for a way to use NSPredicate
to set a LIKE
condition to fetch objects. In addition to that, an OR
would be useful as well. I'm trying to do something where if a user searches "James" I can write an NSPredicate
that will do the equivalent of:
select * from users where firstname LIKE '%James%' OR lastname LIKE '%James%';
Iphone Solutions
Solution 1 - Iphone
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"(firstname CONTAINS[cd] %@) OR (lastname CONTAINS[cd] %@)", _mySearchKey, _mySearchKey];
Solution 2 - Iphone
The CONTAINS
operator will certainly work just fine. If you're looking for a more direct correlation, then you can also use the LIKE operator (*
= 0 or more characters, ?
= 1 character):
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"firstname LIKE '*%1$@*' OR lastname LIKE '*%1$@*'", _mySearchKey];
Solution 3 - Iphone
Another possibility
@"firstname beginswith[c] James"
As a nice alternative to contains
Sometimes contains isn't always the right answer