不用代码片段就可以解决这个错误。然后,我认为这个错误是在滚动tableview &之后选择搜索栏的时候,你正在让你的数组为空或者删除所有的对象从中。
望着看来错误时选择终止应用程序搜索栏 由于未捕获的异常“NSRangeException”,原因是:“ - [NSMutableArray的objectAtIndex:]:指数31超越界限空阵”
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar;
而在另一方面,一旦表滚动创建新的细胞寻找,因为所有对象的数组。但indexPath对象从阵列已经被移除,它只是崩溃您应用程式&显示此错误。
所以我建议你采取两个不同的阵列,你有完整的记录&然后其他搜索结果&然后重新加载表使用数组。
肯定会摆脱这个错误。否则,请确保在搜索完成之前,不要删除阵列中的所有对象。
这是您可以用于搜索的逻辑。 :)
(无效)搜索栏:(的UISearchBar *)theSearchBar textDidChange:(的NSString *)SEARCHTEXT {
//第一删除所有对象。 copyListOfItems = [[NSMutableArray alloc] init]; [copyListOfItems removeAllObjects];
如果([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;
} 否则{
searching = NO;
tblView.scrollEnabled = YES;
[searchBar resignFirstResponder];
}
[tblView reloadData]; }
我们可以看到一些代码吗? – Moshe 2011-02-25 07:22:52