NSArray avec NSPredicate en utilisant NOT IN

90

J'ai un NSArray que je veux filtrer certains objets en utilisant un NSPredicate, j'espérais que je pourrais utiliser NOT IN depuis que j'ai vu que je peux facilement faire un IN.

J'ai donc mon tableau:

self.categoriesList

Ensuite, j'obtiens les valeurs que je souhaite supprimer:

NSArray *parentIDs = [self.cateoriesList valueForKeyPath:@"@distinctUnionOfObjects.ParentCategoryID"];

Cela me donne une liste de ParentCategoryID pour les catégories que je ne veux pas afficher, donc je suppose que je peux utiliser un NSPredicate pour les supprimer:

self.cateoriesList = [self.cateoriesList filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"CategoryID NOT IN %@",parentIDs]];

Cela échoue:

reason: 'Unable to parse the format string "CategoryID NOT IN %@"'

Si je voulais utiliser juste IN cela fonctionne parfaitement bien sûr.

Slee
la source

Réponses:

220

Et quoi NOT (CategoryID IN %@)?

dreamlax
la source
2

Que diriez-vous d'utiliser NONE?

[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs];
Mark Adams
la source
2
Notez que NONE est uniquement pour les relations à plusieurs. Voir stackoverflow.com/questions/12127618/…
Lubbo