我有一個核心數據數據庫,每行顯示在一個表中。filteredArrayUsingPredicate數組不保留
我有一個搜索控制器,使用戶能夠按姓或名進行搜索。
當我從'filteredArrayUsingPredicate'獲得結果時,我重新加載搜索控制器表並且所有工作正常。該表顯示了過濾結果。
當涉及到選擇一個結果時,結果數組爲空,隨後由於[數組atIndex:index path.row]超出範圍而崩潰。該陣列是空的,使我認爲它已被釋放。
此代碼在另一個視圖上完美工作。我已經嘗試過重新編寫和清理,並且仍然在發生 - 任何想法?
下面是我的代碼
@屬性(非原子,保留)的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
}
}
在tableView:numberOfRowsInSection和cellForRowAtIndexPath記錄數組顯示一個正確填充的數組 – Dan 2012-04-12 18:36:01