0

我有一个核心数据数据库,每一行都显示在一个表中。

我有一个搜索控制器,使用户能够按名字或姓氏搜索。

当我从“filteredArrayUsingPredicate”获得结果时,我重新加载搜索控制器表,一切正常。该表显示了过滤后的结果。

在选择结果时,结果数组为空,随后由于 [array atIndex:index path.row] 越界而崩溃。数组是空的,让我觉得它已经被释放了。

此代码在另一个视图上完美运行。我已经尝试过重新编写、清理和构建,但仍然在发生——有什么想法吗?

下面是我的代码

@property(nonatomic,retain) NSArray* cachedSearchResults;

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{


    NSPredicate * predicate =  [NSPredicate predicateWithFormat:@"first_name contains[cd] %@ || last_name contains[cd] %@",searchText, searchText];
    self.cachedSearchResults = [[self.cachedResults filteredArrayUsingPredicate:predicate]retain];
;
    [searchController.searchResultsTableView reloadData];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

PupilManagedObject* selected = nil;
if(tableView == table){
    selected = [cachedResults objectAtIndex:indexPath.row];
}else{
    selected = [self.cachedSearchResults objectAtIndex:indexPath.row]; //array is empty at this point
}
}
4

2 回答 2

0

我发现问题是在我使用数组中的数据之前搜索控制器被解雇了。奇怪但改变我的代码顺序有效

于 2012-07-04T15:03:23.520 回答
-1

此代码片段缺少重要信息。从我所见,听起来您没有正确计算 tableView:numberOfRowsInSection:。验证它是否为您的给定方案提供了正确的行数。

于 2012-04-12T18:21:26.193 回答