使用 NSPredicate 过滤数组

Posted

技术标签:

【中文标题】使用 NSPredicate 过滤数组【英文标题】:Using NSPredicate to filter Array 【发布时间】:2014-12-01 00:04:06 【问题描述】:

我想要的是我的 swag、Apples、Oranges 数组,根据它包含的内容进行过滤,所以如果它包含一个字母或一串字母。到目前为止我有这个:

NSArray* test = @[@"swag", @"Apples", @"Oranges"];
//NSString *nameOnly = [[onlyApps lastPathComponent] stringByDeletingPathExtension]
NSString *searchinput = @"a";
NSPredicate * fltrSearch = [NSPredicate predicateWithFormat:@"%@ contains[cd] '%@'", test,     searchinput];
NSArray * Search = [test filteredArrayUsingPredicate:fltrSearch];
NSLog(@"%@", fltrSearch);
NSLog(@"%@", Search);

【问题讨论】:

【参考方案1】:

请参考以下修改后的代码:-

NSArray* test = @[@"swag", @"Apples", @"Oranges"];
NSString *searchinput = @"a";
NSPredicate * fltrSearch = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",searchinput];
NSArray * Search = [test filteredArrayUsingPredicate:fltrSearch];
NSLog(@"%@", Search);

您的 predicateWithFormat 行是错误的。所以只需替换以下行:-

NSPredicate * fltrSearch = [NSPredicate predicateWithFormat:@"%@ contains[cd] '%@'", test,     searchinput];

修改后的行:-

NSPredicate * fltrSearch = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",searchinput];

输出:-

(
    swag,
    Apples,
    Oranges
)

【讨论】:

好的,如果我想在下面这样做呢?

以上是关于使用 NSPredicate 过滤数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSPredicate 过滤数组的 NSDictionary

使用 NSPredicate 搜索/过滤自定义类数组

使用 NSPredicate 过滤对象中的数组

使用 NSPredicate 过滤 NSDictionary 中的值并返回键数组

使用 NSPredicate 根据数组属性过滤 CoreData 项列表

我想要 swift3.0 的 NSPredicate 的数组过滤器数组