I eine Kerndaten-Datenbank haben, und jede Zeile ist in einer Tabelle gezeigt.filteredArrayUsingPredicate Array nicht beibehalten
Ich habe eine Suchsteuerung die Benutzer zu suchen, indem Vor- oder Nachnamen zu ermöglichen.
wenn ich Ergebnisse von ‚filteredArrayUsingPredicate‘ nachladen ich die Suchsteuerung Tisch und alles funktioniert gut. Die Tabelle zeigt die gefilterten Ergebnisse.
Wenn es um ein Ergebnis wählen kommt, die Ergebnis-Reihe leer ist und stürzt anschließend aufgrund [array atIndex: index path.row] außerhalb der Grenzen. Das Array ist leer und lässt mich glauben, dass es veröffentlicht wurde.
Dieser Code funktioniert perfekt in einer anderen Ansicht. Ich habe versucht zu schreiben und zu reinigen und zu bauen und immer noch passiert - irgendwelche Ideen?
Unten ist mein Code
@property (nonatomic behalten) 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
}
}
Logging das Array bei tableView: numberOfRowsInSection und cellForRowAtIndexPath zeigt eine korrekt gefüllte Array – Dan