我有一个核心数据数据库,每一行都显示在一个表中。
我有一个搜索控制器,使用户能够按名字或姓氏搜索。
当我从“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
}
}