2011-10-05 4 views
0

J'ai une application avec CoreData et j'ai besoin d'utiliser NSPredicate pour récupérer tous les contacts d'une ville.NSPredicate avec localizedCaseInsensitiveCompare

La question est que "ville" peut-être écrit comme LONDON ou Londres ou même Londres. Et l'utilisateur tapera Londres pour rechercher, ou LoNDon. Ce dont j'ai besoin est d'utiliser NSPredicate avec localizedCaseInsensitiveCompare, de sorte que tous les enregistrements soient récupérés.

code:

request.predicate = [NSPredicate predicateWithFormat: 
         @"activityDeleted == %@ && (SUBQUERY(hasMembers, $sub, $sub.memberDeleted == %@)[email protected] > 0) && (SUBQUERY(hasMembers, $sub, $sub.city == %@)", 
         [NSNumber numberWithBool:NO], 
         [NSNumber numberWithBool:NO], 
         city]; 

ci-dessus NSPredicate récupère tous les groupes qui ont des contacts, et non supprimés, qui sont dans une ville, mais je dois le problème CASEINSENSITIVE ...

Comment puis-je fais ça?

Merci,

RL

Répondre

1

Vous n'avez pas besoin de sous-requête ici. Votre prédicat entier peut être:

@"activityDeleted == NO AND ANY hasMembers.memberDeleted = NO AND ANY hasMembers.city =[cd] %@", city 
+0

en n'utilisant pas SUBQUERY, j'ai des problèmes de performance. C'est très rapide si vous utilisez SUBQUERY. –

1

Vous pouvez utiliser le cas insensible et diacritiques modificateurs insensibles "[cd]" sur le ==

SUBQUERY(hasMembers, $sub, $sub.city ==[cd] %@) 

Vous pouvez effectuer des recherches stackoverflow pour « insensible à la casse nspredicate "il y a déjà plusieurs réponses https://stackoverflow.com/search?q=case+insensitive+nspredicate