2011-12-20 10 views
74

Tengo un NSArray que quiero filtrar ciertos objetos usando un NSPredicate, esperaba poder usar NOT IN ya que pude fácilmente hacer una IN.NSArray con NSPredicate usando NOT IN

por lo que tengo a mi matriz:

self.categoriesList 

entonces consigo los valores que desea eliminar:

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

Esto me da una lista de ParentCategoryID de las categorías que no desea mostrar, por lo que figura que puedo utilizar un NSPredicate para eliminarlos:

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

Esta falla:

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

Si quería usar simplemente IN, eso funciona perfectamente, por supuesto.

Respuesta

182

¿Qué hay de NOT (CategoryID IN %@)?

+3

ummm ... sí que funciona - DOH! – Slee

+0

! (CategoryID IN% @) - funciona también)) –

1

¿Qué le parece usar NONE?

[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs]; 
+2

Tenga en cuenta que NONE es solo para muchos. Ver http://stackoverflow.com/questions/12127618/nspredicate-the-left-hand-side-for-an-all-or-any-operator-must-be-either-an-nsa – Lubbo

Cuestiones relacionadas