NSArray com NSPredicate usando NOT IN

90

Eu tenho um NSArray que quero filtrar certos objetos usando um NSPredicate, esperava poder usar NOT IN, pois vi que posso facilmente fazer um IN.

Então, eu tenho meu array:

self.categoriesList

Então, obtenho os valores que desejo remover:

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

Isso me dá uma lista de ParentCategoryIDs para categorias que NÃO desejo exibir, então acho que posso usar um NSPredicate para removê-los:

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

Isso falha:

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

Se eu quisesse usar apenas IN, isso funcionaria perfeitamente, é claro.

Slee
fonte

Respostas:

219

Sobre o quê NOT (CategoryID IN %@)?

dreamlax
fonte
2

Que tal usar NONE?

[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs];
Mark Adams
fonte
2
Observe que NONE é apenas para relacionamento com muitos. Consulte stackoverflow.com/questions/12127618/…
Lubbo