ios - 搜索栏 - 过滤 Collection View 数据源的搜索词数组

标签 ios objective-c nsarray uicollectionview nspredicate

我有一个主 plist 文件,其中包含 Collection View 数据源。该文件有一个 Root 数组元素,其中包含按以下格式布局的每个类别的字典:
Example Layout

该示例显示了一个“类别”。它们被加载到一个 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/

相关文章:

ios - xCode 无法插入新 socket

ios - 修改 NSFileManager 中文件的 NSFileGroupOwnerAccountID 属性未获得更新

objective-c - 匹配函数特定变体的正则表达式

ios - 将 JSON 提要转换为 NSDictionary

ios objective-c 常量 CGFloat *

iphone - 如何将File Blob转换为NSData?

ios - 如何在 Xcode 调试器中更改 "View Value as"的默认类型

ios - NSUserDefaults 在 UITableViewController 中添加行

ios - Swift 或 Objective C 中的 CalDAV 处理

iOS NSArray、NSSet 与核心数据查询(获取请求)