6

Je suis en train de faire un prédicat qui comprend des caractères spéciauxNSPredicate des caractères spéciaux - iPhone

Par exemple:

[[myIngredients filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"name BEGINSWITH[c] %@", [alphabet objectAtIndex:idx]]]; 

Ici, je vais obtenir tous les ingrédients qui commence par (laisser dire pour IDX = 5) 'e'. Comme je dois faire mon application en anglais et en français, certains ingrédients commencent par un caractère spécial comme 'é' ou même 'œ' pour 'o'. Comment puis-je inclure ces caractères spéciaux dans mon prédicat?

Meilleur

Répondre

10

Je pense que vous cherchez peut-être le drapeau « insensible diacritique » qui prend en charge NSPredicate. C'est comme le drapeau "c" que vous utilisez déjà, sauf que vous utilisez un "d". Comme si:

… predicateWithFormat:@"name BEGINSWITH[cd] %@", … 

Maintenant, la chaîne « e » également correspondre « é », « ê », « ë », et ainsi de suite.

+0

Merci, ça fonctionne comme un charme ... sauf pour le œ! Avez-vous une bonne solution pour celui-ci? Sinon, je vais ajouter une exception. – ncohen

+0

La seule chose que je peux penser est d'utiliser un prédicat composé. Créez un NSPredicate pour correspondre à "o" et un autre pour correspondre à "œ". Puis joignez-les avec: '[NSCompoundPredicate ouPredicateWithSubpredicates: [NSArray arrayWithObjects: p1, p2, nil]]'. –

+0

Pointe brillante ... merci beaucoup. –