使用NSPredicate方法predicateWithFormat搜索数组

时间:2013-09-07 19:27:46

标签: ios objective-c nsarray nspredicate

目前尝试设置搜索会搜索一个看起来像这样的Array(bakeryProductArray)

“茶叶面包”,     Tiramusu,     “Treacle Loaf”,     琐事,     “三重巧克力布朗尼”,     松露,     “各种海绵”,     “维也纳旋风”,     “结婚蛋糕”

用户输入UISearchbar的内容。我不清楚如何在CFString中表示数组中的每个项目。

我目前的代码是。

-(void)filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope
{

    searchSearch = [NSPredicate predicateWithFormat:@"self CONTAINS[cd]",searchText];
    //@"%K CONTAINS[cd] %@"
    searchResults = [bakeryProductArray filteredArrayUsingPredicate:searchSearch];

    NSLog(@"Filtered Food Product Count --> %d",[searchResults count]);
}

如果需要,可以回答任何问题并提供更多代码。

1 个答案:

答案 0 :(得分:6)

这是你在找什么?

NSArray *bakeryProductArray = @[@"Tea Loaf", @"Tiramusu", @"Treacle Loaf", @"Trifle"];
NSString *searchText = @"tr";

NSPredicate *searchSearch = [NSPredicate predicateWithFormat:@"self CONTAINS[cd] %@", searchText];
NSArray *searchResults = [bakeryProductArray filteredArrayUsingPredicate:searchSearch];

NSLog(@"%@", searchResults);
// "Treacle Loaf",
// Trifle

这将查找包含给定搜索字符串的所有字符串(不区分大小写)。 或者,您可以根据需要使用“=”或“BEGINSWITH”。 (有关"Predicate Programming Guide"中谓词的更多信息。)