Исправить ошибку довольно сложно, не имея фрагмента кода. Кроме того, из этой ошибки я думаю, что после прокрутки табличного представления и выбора панели поиска в это время вы обнуляете массив или удаляете все объекты изit.
Глядя на ошибку, кажется, что при выборе приложения Terminating SearchBar из-за необработанного исключения 'NSRangeException' причина: '- [NSMutableArray objectAtIndex:]: индекс 31 за пределами для пустого массива'
- (BOOL) searchBarShouldBeginEditing: (UISearchBar *) searchBar;
в то время как на другой стороне таблицы прокручивается, создавая новые ячейки, ища объекты indexPath в массиве. Но так как всеобъекты были удалены из массива, он просто вылетает из приложения и показывает эту ошибку.
Итак, я предлагаю вам взять два разных массива, один из которых у вас есть с полными записями, а затем другой для результата поиска и затем перезагрузитьтаблица с использованием массива.
вы избавитесьЭта ошибка наверняка. В противном случае постарайтесь убедиться, что вы не удаляете все объекты из массива, пока поиск не будет завершен.
Эту логику вы можете использовать для поиска.:)
(void) searchBar: (UISearchBar *) theSearchBar textDidChange: (NSString *) searchText {
// Сначала удалить все объекты.copyListOfItems = [[NSMutableArray alloc] init];[copyListOfItems removeAllObjects];
if ([длина searchText]> 0) {
searching = YES;
tblView.scrollEnabled = YES;
NSString *searchText = searchBar.text;
NSLog(@"%@",searchText);
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
for (NSMutableDictionary *dictionary in YourMainArray)
{
NSRange titleResultsRange = [[dictionary valueForKey:@"English"] rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[copyListOfItems addObject:dictionary];
}
[searchArray release];
searchArray = nil;
} else {
searching = NO;
tblView.scrollEnabled = YES;
[searchBar resignFirstResponder];
}
[tblView reloadData];}