I have a predicate that looks like
[NSPredicate predicateWithFormat:@"region=%@ && locality CONTAINS %@", self.region, query];
I want it to match ignoring case. Whats the trick?
I have a predicate that looks like
[NSPredicate predicateWithFormat:@"region=%@ && locality CONTAINS %@", self.region, query];
I want it to match ignoring case. Whats the trick?
Turns out I need to have a predicate in the form of:
[NSPredicate predicateWithFormat:@"region=%@ && locality CONTAINS[cd] %@", self.region, query]
and now it is case insensitive
As described in the Predicate Programming Guide, string comparisons in an NSPredicate
can be made case insensitive by including a [c]
(in square brackets) after the comparison operator (e.g. BEGINSWITH[c]
). You can make the comparison diacritic insensitive using a [d]
modifier or case and diacritic insensitive with a [cd]
modifier. In your example, you would use:
[NSPredicate predicateWithFormat:@"region=%@ && locality CONTAINS[cd] %@", self.region, query]
for case and diacritic insensitivity.