NSArray mit NSPredicate unter Verwendung von NOT IN

90

Ich habe ein NSArray, mit dem ich bestimmte Objekte mithilfe eines NSPredicate herausfiltern möchte. Ich hatte gehofft, dass ich NOT IN verwenden kann, da ich gesehen habe, dass ich problemlos ein IN ausführen kann.

Also habe ich mein Array:

self.categoriesList

Dann erhalte ich die Werte, die ich entfernen möchte:

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

Dies gibt mir eine Liste der ParentCategoryIDs für Kategorien, die ich NICHT anzeigen möchte, sodass ich denke, dass ich ein NSPredicate verwenden kann, um sie zu entfernen:

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

Dies schlägt fehl:

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

Wenn ich nur IN verwenden wollte, funktioniert das natürlich perfekt.

Slee
quelle

Antworten:

219

Was ist mit NOT (CategoryID IN %@)?

Dreamlax
quelle
2

Wie wäre es mit NONE?

[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs];
Mark Adams
quelle
2
Beachten Sie, dass NONE nur für zu viele Beziehungen gilt. Siehe stackoverflow.com/questions/12127618/…
Lubbo