50 votes

NSPredicate insensible à la casse avec un seul résultat dans CoreData

Voici mon NSPredicate actuel :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC==%@ OR ItemID==%@", aUPCCode,aUPCCode];

Comment puis-je faire en sorte que cela ne soit pas sensible à la casse ?

Et je ne veux pas faire de correspondance partielle.

Par exemple, s'ils entrent 123 pour un code UPCC, je ne veux pas obtenir 123, 123a, 123b, 123c, etc. Je veux seulement une correspondance exacte.

J'ai pensé à faire ça, mais ça semble un peu ridicule :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC==%@ OR ItemID==%@ OR UPC==%@ OR ItemID==%@ OR UPC==%@ OR ItemID==%@", aUPCCode,aUPCCode,[ aUPCCode lowercaseString] ,[aUPCCode lowercaseString], [aUPCCode uppercaseString],[aUPCCode uppercaseString]];

1 votes

Clarification : Vous dites : " S'ils entrent 123 pour un code UPCC, je ne veux pas obtenir 123... ". Cela n'a aucun sens. Est-ce une faute de frappe. De plus, vous semblez sous-entendre que votre prédiction actuelle est un test "gourmand" qui correspond à toute valeur commençant par "123". 123 . Est-ce le cas ?

0 votes

Quel type de magasin persistant utilisez-vous ?

97voto

Sinetris Points 3032

Comme Dave DeLong l'a dit, vous pouvez utiliser :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC ==[c] %@ OR ItemID ==[c] %@", aUPCCode,aUPCCode];

Modifier :

Utilisez ==[c] au lieu de ==[cd] ou vous obtenez aussi des accents ( abcd == àbcd ).

12voto

Harry Points 570

Comme l'a dit Sinetris, ce qui précède fonctionne en Objective-C.

Il fonctionne pour les cas non sensibles. Récupère tous les résultats qui contiennent la valeur de la chaîne "exemple".

Mise à jour de Swift 4.0/5.0

let predicateIsNumber = NSPredicate(format: "keywordContactNo contains[c] %@", example!) 

J'espère que cela vous aidera

Merci

0 votes

Ça m'a aidé, merci

0voto

Michael Frederick Points 12700

Peut-être ça :

[NSPredicate predicateWithFormat:@"UPC MATCHES[cd] %@ OR ItemID MATCHES[cd] %@",aUPCCode,aUPCCode];

7 votes

MATCHES est un ajout inutile. Vous pouvez faire UPC ==[cd] %@...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X