一、搜框中输入关键字的事件响应
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ NSLog(@"输入的关键字是---%@---%lu",searchText,(unsigned long)searchText.length); [self.resultArray removeAllObjects]; dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_async(globalQueue, ^{ if (searchText!=nil && searchText.length>0) { for (DataModel *model in self.dataArray) { NSString *tempStr = model.content; NSString *pinyin = [self transformToPinyin:tempStr]; NSLog(@"pinyin--%@",pinyin); if ([pinyin rangeOfString:searchText options:NSCaseInsensitiveSearch].length >0 ) { [self.resultArray addObject:model]; } } }else{ self.resultArray = [NSMutableArray arrayWithArray:self.dataArray]; } dispatch_async(dispatch_get_main_queue(), ^{ [_tableView reloadData]; }); });}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
二、获取汉字转成拼音字符串 通讯录模糊搜索 支持拼音检索 首字母 全拼 汉字 搜索
- (NSString *)transformToPinyin:(NSString *)aString{ NSMutableString *str = [NSMutableString stringWithString:aString]; CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO); CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO); NSArray *pinyinArray = [str componentsSeparatedByString:@" "]; NSMutableString *allString = [NSMutableString new]; int count = 0; for (int i = 0; i < pinyinArray.count; i++) { for(int i = 0; i < pinyinArray.count;i++) { if (i == count) { [allString appendString:@"#"]; } [allString appendFormat:@"%@",pinyinArray[i]]; } [allString appendString:@","]; count ++; } NSMutableString *initialStr = [NSMutableString new]; for (NSString *s in pinyinArray) { if (s.length > 0) { [initialStr appendString: [s substringToIndex:1]]; } } [allString appendFormat:@"#%@",initialStr]; [allString appendFormat:@",#%@",aString]; return allString;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39