搜索栏 - 过滤馆藏视图数据源的搜索词数组

时间:2015-01-26 23:22:06

标签: ios objective-c nsarray uicollectionview nspredicate

我有一个主plist文件,其中包含一个集合查看数据源。该文件有一个Root数组元素,每个类别的字典按以下格式排列:
Example Layout

该示例显示了一个类别'。它们被加载到UICollectionView的数组和用于访问的属性

self.mainDataSource = [[NSArray alloc] initWithContentsOfFile:plistPath];  

当我设置单元格时,我为indexPath.row创建一个Dictionary实例并访问相关对象。这一切都很好。

问题
我现在要做的是添加一个搜索栏。我有所有设置,但我想根据输入的字词过滤类别与“' sub'每个类别可能具有的搜索词数组。

我有以下方法在搜索时运行,但我无法找出搜索“' sub”的最佳方法。 Dictionaries类别的数组。

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope{
    NSPredicate *resultPredicate    = [NSPredicate predicateWithFormat:@"self contains[c] %@", searchText];
    self.dataSourceForSearchResult  = [self.mainDataSource filteredArrayUsingPredicate:resultPredicate];
}

1 个答案:

答案 0 :(得分:1)

NSPredicate *resultPredicate    = [NSPredicate predicateWithFormat:@"(ANY SearchTerms LIKE[cd] %@ OR ANY SearchTerms CONTAINS[cd] %@)", searchText, searchText];
self.dataSourceForSearchResult  = [self.mainDataSource filteredArrayUsingPredicate:resultPredicate];  

诀窍是包含'ANY'专门为LIKE工作。然后将相关子数组的名称作为键。