NSArray 和 NSPredicate 使用 NOT IN
Posted
技术标签:
【中文标题】NSArray 和 NSPredicate 使用 NOT IN【英文标题】:NSArray with NSPredicate using NOT IN 【发布时间】:2012-01-24 17:27:34 【问题描述】:我有一个 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 当然可以完美运行。
【问题讨论】:
【参考方案1】:用NONE
怎么样?
[NSPredicate predicateWithFormat:@"NONE CategoryID IN %@", parentIDs];
【讨论】:
请注意,NONE 仅适用于对多关系。见***.com/questions/12127618/…【参考方案2】:NOT (CategoryID IN %@)
呢?
【讨论】:
以上是关于NSArray 和 NSPredicate 使用 NOT IN的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSPredicate 过滤 NSDictionaries 的 NSArray
使用 NSPredicate 过滤 NSArray 并找到相似的字符串