web-dev-qa-db-ja.com

NOT INを使用したNSPredicateを持つNSArray

NSPredicateを使用して特定のオブジェクトを除外したいNSArrayがあります。INを簡単に実行できることがわかったので、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だけを使用したい場合は完全に機能します。

87
Slee

NOT (CategoryID IN %@)はどうですか?

210
dreamlax

NONEを使用してはどうですか?

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