从UISearchBar对NSArray执行搜索

时间:2012-11-06 15:41:10

标签: objective-c ios nsarray nspredicate

我正在尝试搜索已加载到名为tableData的NSArray中的JSON提要的某些结果,然后显示在UITable中。

searchResults NSArray已声明为.h文件。问题是目前searchResults为空并且没有输出到控制台。我不确定为什么......

我想知道

是否遗漏了什么
searchResults = [tableData filteredArrayUsingPredicate:resultPredicate];

下面的代码行

感谢您的帮助。

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    NSPredicate *resultPredicate = [NSPredicate
                                    predicateWithFormat:@"SELF contains[cd] %@",
                                    searchText];

    searchResults = [tableData filteredArrayUsingPredicate:resultPredicate];

    NSLog(@"searchResults: %@", searchResults);

    NSLog(@"tableData results: %@", tableData);

}

2 个答案:

答案 0 :(得分:2)

如果你在字典中寻找一个名为'cat'的字段,而不是让谓词在SELF中查找,它应该在SELF.cat中查找。

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF.cat CONTAINS[cd] %@", searchText];

如果仍需要检查对象中包含的其他字段,则可以创建复合谓词。有关谓词的详细信息,请参阅Apple's Predicate Programming Guide.

答案 1 :(得分:0)

尝试替换[cd] - > [C]:

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"self.youProperty contains[c] %@", searchString];

就像[cd]的意思是“case-and diacritic-insensitive like。”