NSPredicate: problème de comparaison de string
6ix
Membre
Hello,
Je suis tombé sur un problème qui me semble bizarre, relatif au filtrage avec NSPredicate d'un NSArray comportant des entités Core Data. J'ai trouvé comment le contourner, mais ça me semble pas très " propre ", je me dis que c'est peut-être moi qui n'ai pas tout compris...
Je fais la chose suivante:
1) dans un NSArray d'entités Core Date, je sélectionne la 1e entité (si existante), et récupère le NSString de l'attribut nom.
2) je filtre ensuite une copie de ce même NSArray en ne gardant que les entités ayant ce même nom, de cette manière:
Pour info, l'idée est de regrouper dans différents tableaux les entités ayant le même nom; il y a d'ailleurs peut-être une méthode beaucoup plus rapide pour cela, si ça se trouve ?
Bref, ma solution fonctionne, sauf dans le cas où des entités ont un nom " vide ", assigné avec @"". En résumé, il m'est impossible de filtrer mon tableau afin de récupérer les entités ayant un nom vide justement.
Y a-t-il une solution à cela ? Ca peut sembler logique vu que @"" devient nil, mais soit j'ai manqué un truc, soit c'est un peu con que ce cas ne soit pas prévu...
Pour l'instant, ma solution est de toujours attribuer un nom, @- signifiant " vide ", et là tout fonctionne correctement.
Je suis tombé sur un problème qui me semble bizarre, relatif au filtrage avec NSPredicate d'un NSArray comportant des entités Core Data. J'ai trouvé comment le contourner, mais ça me semble pas très " propre ", je me dis que c'est peut-être moi qui n'ai pas tout compris...
Je fais la chose suivante:
1) dans un NSArray d'entités Core Date, je sélectionne la 1e entité (si existante), et récupère le NSString de l'attribut nom.
2) je filtre ensuite une copie de ce même NSArray en ne gardant que les entités ayant ce même nom, de cette manière:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like[c] %@", entityName];
Pour info, l'idée est de regrouper dans différents tableaux les entités ayant le même nom; il y a d'ailleurs peut-être une méthode beaucoup plus rapide pour cela, si ça se trouve ?
Bref, ma solution fonctionne, sauf dans le cas où des entités ont un nom " vide ", assigné avec @"". En résumé, il m'est impossible de filtrer mon tableau afin de récupérer les entités ayant un nom vide justement.
Y a-t-il une solution à cela ? Ca peut sembler logique vu que @"" devient nil, mais soit j'ai manqué un truc, soit c'est un peu con que ce cas ne soit pas prévu...
Pour l'instant, ma solution est de toujours attribuer un nom, @- signifiant " vide ", et là tout fonctionne correctement.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Dans le cas que tu évoques, la variable entityName contient quoi ? la chaà®ne vide @"" ? ou elle est à nil ?
Ma variable est bien initialisée à @"" (chaà®ne vide). Et j'ai fait des tests en la " hard-codant " à @"". En fait, j'ai l'impression que ce sont les éléments comparés qui se comportent comme si leur variable de nom valait nil, est donc que le name like était de toute façon faux. Bref, cela m'intrigue !