我在表视图中实现搜索功能时遇到问题...这是我正在实现搜索的代码......
- (void) searchTableView {
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
searchArray = [data boats];
for(Boat *boat in searchArray)
{
NSRange titleResultsRange = [[boat boatName] rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[copyListOfItems addObject:boat];
}
[searchArray release];
searchArray = nil;
}
当搜索栏开始编辑时,我称之为......
- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {
//Remove all objects first.
[copyListOfItems removeAllObjects];
if([searchText length] > 0) {
[ovController.view removeFromSuperview];
searching = YES;
letUserSelectRow = YES;
self.tableView.scrollEnabled = YES;
[self searchTableView];
}
else {
[self.tableView insertSubview:ovController.view aboveSubview:self.parentViewController.view];
searching = NO;
letUserSelectRow = NO;
self.tableView.scrollEnabled = NO;
}
[self.tableView reloadData];
}
并使用...
将值分配给表格行if(searching)
{
Boat *copyboat = [copyListOfItems objectAtIndex:[indexPath row]];
cell.textLabel.text = [copyboat boatName];
NSLog(@"%@", [copyboat boatName]);
}
else {
Boat *fullboat =[data.boats objectAtIndex:[indexPath row]];
cell.textLabel.text =[fullboat boatName];
}
但是当我开始在搜索栏中输入值时,应用程序崩溃了。当我键入不同的字母表时,我会遇到不同的错误。我得到的错误就像。 *由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [NSMutableArray objectAtIndex:]:索引6超出边界[0 .. 5]'
或
*由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [NSMutableArray objectAtIndex:]:索引0超出空数组的界限'
有时候它也显示EXEC_BAD_ACCESS ...我现在搞砸了。任何人都可以告诉我错误究竟是什么...... ???
答案 0 :(得分:0)
创建船名称子集时,是否更改了numberOfRowsInSection中返回值的值?看起来表正在重新加载并尝试查找7行数据,但现在只有6个数据。类似的东西:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
if (searching) {
return [copyListOfItems count];
} else {
return [data count];
}
}