2011-12-20 9 views
74

NSPredicateを使用して特定のオブジェクトをフィルタリングするNSArrayがあります.INを簡単に行うことができるので、NOT INを使用することができます。NSPredicateを使用してNSArrayをNOT INを使用する

だから、私は配列を持っている:

self.categoriesList 

は、それから私は私が削除したい値を取得:

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

これは私が表示したくないカテゴリのParentCategoryIDのリストを与え、これが失敗した

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

:ので、私はそれらを削除するNSPredicateを使用することができます理解

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

私はちょうどもちろん完璧に動作するINを使いたいと思ったら。

答えて

182

NOT (CategoryID IN %@)

+3

ummm ... yeah that works - DOH! – Slee

+0

!(CategoryID IN%@) - も動作します)) –

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

関連する問題