Using NSPredicate to determine if a string equals another string
Solution 1
Try [NSPredicate predicateWithFormat:@"title ==[c] 'on call'"];
(The [c]
makes the equality comparison case-insensitive.)
Solution 2
Try predicate with format @"self.title like[c] 'on call'"
. The following sample code outputs 2 strings:
NSArray* ar = [NSArray arrayWithObjects:@"on call", @"I'm on call", @"lala", @"On call", nil];
NSArray* filt = [ar filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self like[c] 'on call'"]];
NSLog([filt description]);
//Output
"on call",
"On call"
Garry Pettet
I'm a former UK radiologist who now works full time as a web, desktop and iOS developer.
Updated on July 16, 2022Comments
-
Garry Pettet almost 2 years
I have an
NSArray
of CalEvents returned with the[CalCalendarStore eventPredicateWithStartDate]
method. From the events returned, I am trying to keep only those in which the title of the event ==@"on call"
(case-insensitive).I am able to keep in the array those events whose title includes
@"on call"
with the following code (where 'events' is a 'NSArray' populated withCalEvents
):NSPredicate *onCallPredicate = [NSPredicate predicateWithFormat:@"(SELF.title CONTAINS[c] 'on call')"]; [events filteredArrayUsingPredicate:onCallPredicate];
I've tried using a predicate format string like:
@"SELF.title == 'on call'"
but this doesn't seem to work.Is there an easier way to do this?
-
Dave DeLong almost 14 years+1, although you could throw the
[c]
modifier after the==
to make it case-insensitive. -
Cory Kilger almost 14 yearsEdited it to be case-insensitive.
-
Garry Pettet almost 14 yearsIs there a difference between using
==
andlike
for string comparisons? -
Vladimir almost 14 yearsLooks like in your case the work they same. But if you want to use wildcards in string comparison then '==' won't work and you'll need to use LIKE instead.
-
Samuel over 7 yearsJust curious, will MATCH[n] work for == when used without any (*?.) wildcards?