NSArray z NSPredicate używając NOT IN

90

Mam NSArray, który chcę odfiltrować pewne obiekty za pomocą NSPredicate. Miałem nadzieję, że mogę użyć NOT IN, ponieważ zobaczyłem, że mogę łatwo wykonać IN.

Więc mam swoją tablicę:

self.categoriesList

Następnie otrzymuję wartości, które chcę usunąć:

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

To daje mi listę ParentCategoryID dla kategorii, których NIE chcę wyświetlać, więc myślę, że mogę użyć NSPredicate, aby je usunąć:

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

To się nie udaje:

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

Gdybym chciał użyć tylko IN, to oczywiście działa doskonale.

Slee
źródło

Odpowiedzi:

221

O co chodzi NOT (CategoryID IN %@)?

dreamlax
źródło
2

A co powiesz na używanie NONE?

[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs];
Mark Adams
źródło
2
Zwróć uwagę, że NONE dotyczy tylko relacji za wiele. Zobacz stackoverflow.com/questions/12127618/…
Lubbo,