NSArray с NSPredicate с использованием NOT IN - PullRequest
85 голосов
/ 20 декабря 2011

У меня есть NSArray, для которого я хочу отфильтровать определенные объекты с помощью NSPredicate, я надеялся, что смогу использовать NOT IN, так как увидел, что могу легко сделать IN.

Итак, у меня есть мой массив:

self.categoriesList

Затем я получаю значения, которые хочу удалить:

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

Это дает мне список ParentCategoryID для категорий, которые я НЕ хочу отображать, поэтому я решил, что могу использовать NSPredicate для их удаления:

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

Это не удалось:

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

Если бы я хотел использовать просто IN, это, конечно, прекрасно работает.

Ответы [ 2 ]

208 голосов
/ 20 декабря 2011

А как же NOT (CategoryID IN %@)?

2 голосов
/ 20 декабря 2011

Как насчет использования NONE?

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