一般来说这种情况还是蛮多的,比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。
首先是实现tableView中的UISearchDisplayDelegate
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope{ NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", searchText]; searchResults = [fieldsNameArray filteredArrayUsingPredicate:resultPredicate]; } - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{ [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; return YES; }
大小写比较
[c]表示忽略大小写,[d]表示忽略重音,可以在一起使用,如下:
NSString *match = @"imagexyz*.png"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[cd] %@", match]; NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
使用正则
NSString *match = @"imagexyz-\\d{3}\\.png"; //imagexyz-123.png NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match]; NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];