2011-12-20 111 views
74

我有一個NSArray,我想過濾掉某些對象使用NSPredicate,我希望我可以使用NOT IN,因爲我看到我可以輕鬆地做一個IN。NSArray與NSPredicate使用NOT 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,那當然是完美的。

回答

182

NOT (CategoryID IN %@)怎麼樣?

+3

嗯......是的,這是行之有效的 - DOH! – Slee 2011-12-20 19:22:36

+0

!(CategoryID IN%@) - 也可以) – 2015-02-04 19:19:34

1

如何使用NONE

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

請注意,NONE僅適用於多對多關係。請參閱http://stackoverflow.com/questions/12127618/nspredicate-the-left-hand-side-for-an-all-or-any-operator-must-be-either-an-nsa – Lubbo 2013-06-21 11:06:25