如何使用 NSPredicate 过滤 NSArray
Posted
技术标签:
【中文标题】如何使用 NSPredicate 过滤 NSArray【英文标题】:How to filter an NSArray using a NSPredicate 【发布时间】:2013-11-01 22:43:39 【问题描述】:我正在尝试过滤我拥有的 NSDictionaries 数组。
这是我的过滤器目前的样子:
NSDictionary *selectedItemDictionary = [sortedItemsArray objectAtIndex:indexPath.row];
NSMutableArray *sortedItemsMutableArrayCopy = [sortedItemsArray copy];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"dpc like %@", [selectedItemDictionary objectForKey:@"dpc"]];
[sortedItemsMutableArrayCopy filterUsingPredicate:predicate];
这就是我的selectedItemDictionary
的样子:
dc = 3;
Cmp = F;
Qty = 0;
dp = 0;
实际上,我正在尝试搜索 sortedItemsArray 并创建一个新数组,其中包含与 UITableViewCell 中所选行具有相同 dc 编号的任何内容。但是使用上面的代码,我收到了这个错误:
-[__NSArrayI filterUsingPredicate:]: unrecognized selector sent to instance
【问题讨论】:
【参考方案1】:filterUsingPredicate:
是您正在寻找的 NSMutable 数组的方法filteredArrayUsingPredicate:
您可以从控制台输出 __NSArrayI
得知您有一个不可变数组实例。
如果你想要一个可变数组,你需要将[sortedItemsArray copy]
更改为[sortedItemsArray mutableCopy]
【讨论】:
是的,这正是我刚刚意识到的,现在再次查看苹果文档。非常感谢您的回答,很快就会将其标记为正确。以上是关于如何使用 NSPredicate 过滤 NSArray的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 NSPredicate 过滤 Core Data 托管对象?
iPhone如何使用NSPredicate按父实体过滤Core Data?
如何使用 NSPredicate 从另一个 NSMutableArray 中过滤 NSMutableArray