iOS资料iOSiOS 基础知识·底层原理

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
上一篇下一篇

猜你喜欢

热点阅读