NSPredicate(谓词)搜索功能实现
2016-06-02 本文已影响594人
zhangyunjiang
前提
本搜索功能主要是在集合套字典的数据源中实现
实现步骤
1.提供谓词搜索关键字
2.提供搜索区域
3.将搜索关键字和谓词结合
4.接收搜索结果
数据源
数据源样式为集合套字典
屏幕快照 2016-06-02 上午10.54.08.png核心搜索代码
(1)self.dataList查询数据源
(2)arr 按照规定的key值进行数据查询
(3)searchStr 搜索关键字
(4)_searchResultArr 搜索结果
//搜索关键字
NSString *searchStr =self.titlename;
//按照规定的key值进行数据查询
NSArray *arr=@[@"MCType",@"MCCompanyname",@"MCIntroduce",@"MCPlace",@"MCTime",@"Money",@"MCRequirement"];
_predicateStr=[NSMutableString stringWithFormat:@""];
for (NSString *parameterStr in arr) {
[_predicateStr appendString:[NSString stringWithFormat:@"self.%@ CONTAINS [CD] '%@' OR ",parameterStr,searchStr]];
}
[_predicateStr deleteCharactersInRange:NSMakeRange(_predicateStr.length-4,4)];
NSPredicate *predicate = [NSPredicate predicateWithFormat:_predicateStr];
//查询结果
//self.dataList查询数据源
_searchResultArr = [NSMutableArray arrayWithArray:[self.dataList filteredArrayUsingPredicate:predicate]];
通过搜索结果后显示在tabview上
Simulator Screen Shot 2016年6月2日 上午11.05.05.png Simulator Screen Shot 2016年6月2日 上午11.05.50.png