2012-11-06 36 views
2

我试图对已经加载到名为tableData的NSArray然后显示在UITable中的JSON提要执行搜索。在UISearchBar上执行搜索NSArray

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); 

} 
+0

你tableData只是NSStrings的一个NSArray? – gamma

+0

不,数据是类似于每个返回的记录的NSDictionary:表结果是{cat =“Pacchetti Vacanze”; city =“*”; coords = { lat =“45.69769”; lng =“9.21534”; }; – hanumanDev

回答

2

如果您正在查找字典中名为'cat'的字段,而不是在SELF中查找谓词,它应该在SELF.cat中查找。

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

如果仍然需要检查对象中包含的其他字段,可以创建复合谓词。在谓词详情可Apple's Predicate Programming Guide.

0

尝试找到替换[CD] - > [C]:“区分和变音符号不敏感的,如”

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

像[CD]表示