【发布时间】:2011-11-26 13:20:41
【问题描述】:
我正在向我的 iOS 应用程序的表格视图组件添加一个搜索栏,该组件允许通过由字典组成的 NSArray 进行搜索。但是,搜索栏并非一直有效 - 如果我的数据完全匹配,但不是部分匹配,它会成功打印出结果。例如,如果输入了确切的短语,它将打印出“关闭灯”作为结果,但如果只输入“转动”则不会。然而,在仅由字符串组成的调试数组上,搜索功能完全符合预期。
我的谓词代码在这里:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchText];
self.searchResults = [allSearchableItems filteredArrayUsingPredicate:resultPredicate];
}
实际工作的测试块是这样写的:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchText];
NSArray *array = [NSArray arrayWithObjects:@"Miguel", @"Ben", @"Adam", @"Melissa", nil];
NSArray *moreStuff = [array filteredArrayUsingPredicate:resultPredicate];
NSLog(@"%@", moreStuff);
self.searchResults = [allSearchableItems filteredArrayUsingPredicate:resultPredicate];
}
在上面的代码块中,NSArray "moreStuff" 打印出来并正确更新,但是在第一个块中,NSArray "searchResults" 仅在输入完全匹配时才返回结果。我在这里完全不知所措,因此非常感谢任何帮助/建议。
【问题讨论】:
标签: objective-c ios search contains predicate