1
Я хотел бы улучшить исследование в пределах моего UITableViewController
. Теперь у меня есть NSMutableArray
вроде этого:Улучшить поиск в UISearchDisplayController
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"the dog is brown",@"the cat is red",@"the mouse is grey"];
Теперь, если я пишу в своем searchbar
, например: «кошки», таблица покажет «кот красный» и это нормально. Но если я напишу: «cat red», таблица будет пустой.
Что я могу сделать, чтобы улучшить это?
так становится, как сделать поиск в настоящее время:
-(void)loadArray {
arraySearch = [[NSMutableArray alloc] initWithCapacity:[array count]];
[arraySearch addObjectsFromArray: array];
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
[arraySearch removeAllObjects];
for (int z=0; z<[array count]; z++) {
if ([[array objectAtIndex:z] rangeOfString:searchText options:NSCaseInsensitiveSearch].location !=NSNotFound) {
[arraySearch addObject:[array objectAtIndex:z]];
}
[self.tableView reloadData];
}
Спасибо всем.
Я нашел решение, и я хотел бы поделиться с вами:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
[arraySearch removeAllObjects];
NSArray *listItems = [searchText componentsSeparatedByString:@" "];
NSMutableArray *arrayPredicate = [NSMutableArray array];
for (NSString *str in listItems) {
if ([str length] > 0) {
NSPredicate *pred = [NSPredicate predicateWithFormat:@"self contains [cd] %@ OR self contains [cd] %@", str, str];
[arrayPredicate addObject:pred];
}
}
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:arrayPredicate];
[arraySearch addObjectsFromArray:[array filteredArrayUsingPredicate:predicate]];
[self.tableView reloadData];
}
спасибо за ответ, я получаю сообщение об ошибке: «слишком много аргументов для вызова метода, ожидается 1, есть 2 "на [array addObject: @" SELF как [c]% @, str]; " – Ilario
извините, отредактировал ответ. попробуй. Ошибка –
: arraySearch = [arraySearch filterArrayUsingPredicate: предикат]; несовместимые типы указателей, назначающие «NSMutableArray» из «NSArray» – Ilario