NSPredicate case-insensitive matching on to-many relationship
Solution 1:
If I understand you correctly, you want your predicate to be true whenever any keywords name matches the search string. For this you need to test with the ANY keyword like this:
[NSPredicate predicateWithFormat:@"ANY keywords.name CONTAINS[c] %@", ...];
This will search the keywords and return true if any of those keywords name contains your search string.
Solution 2:
I believe the answer is:
[NSPredicate predicateWithFormat:@"keywords.name CONTAINS[cd] %@", self.searchString];
String comparisons are by default case and diacritic sensitive. You can modify an operator using the key characters c and d within square braces to specify case and diacritic insensitivity respectively, for example firstName BEGINSWITH[cd] $FIRST_NAME.
Predicate Format String Syntax
Solution 3:
If you is trying to catch only the equals names but with insensitive case, I think it is the best solution
[NSPredicate predicateWithFormat:@"ANY keywords.name LIKE[c] %@", ...];
You helped me a lot. Thanks guys!!!
In my case I did:
[NSPredicate predicateWithFormat:@"ANY name LIKE[c] %@", @"teste"];