我有一个主 plist 文件,其中包含 Collection View 数据源。该文件有一个 Root 数组元素,其中包含按以下格式布局的每个类别的字典:
该示例显示了一个“类别”。它们被加载到一个 UICollectionView
数组和一个用于访问的属性
self.mainDataSource = [[NSArray alloc] initWithContentsOfFile:plistPath];
当我设置单元格时,我为 indexPath.row
创建一个 Dictionary 实例并访问相关对象。这一切都运行良好。
问题
我现在要做的是添加一个搜索栏。我已经完成了所有设置,但我想根据输入的单词过滤类别,与每个类别可能具有的“子”搜索词数组相比。
我有以下在搜索时运行的方法,但我无法找出搜索类别词典的“子”数组的最佳方法。
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"self contains[c] %@", searchText];
self.dataSourceForSearchResult = [self.mainDataSource filteredArrayUsingPredicate:resultPredicate];
}
最佳答案
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"(ANY SearchTerms LIKE[cd] %@ OR ANY SearchTerms CONTAINS[cd] %@)", searchText, searchText];
self.dataSourceForSearchResult = [self.mainDataSource filteredArrayUsingPredicate:resultPredicate];
诀窍是包含专门为 LIKE 工作的“ANY”。然后相关子数组的名称作为key。
关于ios - 搜索栏 - 过滤 Collection View 数据源的搜索词数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160600/